http://bugs.winehq.org/show_bug.cgi?id=26226
Ulrik Dickow u.dickow@gmail.com changed:
What |Removed |Added ---------------------------------------------------------------------------- Attachment #40507|0 |1 is obsolete| | Attachment #40511|0 |1 is obsolete| |
--- Comment #35 from Ulrik Dickow u.dickow@gmail.com 2012-07-08 05:59:51 CDT --- Created attachment 40928 --> http://bugs.winehq.org/attachment.cgi?id=40928 Trace BridgeCentral 2.2.5 vs. Buhl2012 diff wine-1.5.8-git1 (debug02b)
My patches (try 1 as well as try 2) fix the bug for BridgeCentral, but unfortunately not for the Buhl app (neither 2011 nor 2012 version).
This attachment is a 'diff -u999' between slightly edited versions of msxml-traces of the first SOAP request of BridgeCentral 2.2.5 (left) versus the 2012 version of the Buhl app (http://www.buhl.de/produkte/alle/wiso-euer-und-kasse-2012/product.html#Testv...) (right), running on a wine 1.5.8 patched with Marcus' one-line "fprinf full request"-patch (attachment 33432) and try 2 of my "msxml3: Support xmlns..."-patch (http://www.winehq.org/pipermail/wine-devel/2012-June/096069.html , obsoletes attachment 40511). (Attachment 40507 was obsoleted by the improved version included in Wine 1.5.7 via commit fc8ab63563663f5076d86fa814289d2e046e5125).
The "slight editing" was to wipe out: 1) all 6+ digit hex numbers (piped through 'perl -pe "s/0x[0-9a-f]{6,}/0x.../g"' and 2) the login numbers/codes for my bridge club.
We see that both apps use Borland SOAP 1.2 to generate exactly the same msxml calls to create the SOAP-ENV:Envelope and SOAP-ENV:Body elements, including xmlns attributes. At the third level the only difference is the app specific names and xmlns URIs of the elements (KlubLogin vs. CheckActionCode etc.). But at the fourth, innermost level, the Buhl app does some extra attribute node list walking and strangely ends up using the URI of the xmlns:xsd attribute instead of re-using the URI of the third level element (https://on4u3.buhl.de/buhl/WebActionCode/). This results in bad XML for the Buhl app (wrong URI in innermost element), while BridgeCentral makes fully valid XML (correct URIs, although child redundancies not optimized away).
The problem probably is that we don't create attribute nodes for the "redundant" xmlns attributes. A full fix would be to create all the attribute nodes that the app asks for, but then use a much more intelligent set of functions for creating final XML (*_get_xml). At the same time that would solve the minor problem of redundant xmlns attributes printed in children. However, this strategy is not as easy as the "skip attribute creation hack" with the current libxml2.
Until a full fix is developed for either libxml2 or wine, my patch is useful as a temporary solution to solve the problem for some, but not all applications.