PATCH: Proper namespaces handling in DJabberd
Martin Atkins
mart at degeneration.co.uk
Wed Jun 10 21:51:52 UTC 2009
Daniel Ruoso wrote:
>
> Just try to send any XML with namespace information and you should see
> it happening, like:
>
> <SOAP-ENV:Envelope xmlns:SOAP-ENV="...">
> <SOAP-ENV:Body>
> <SOAP-ENV:Fault>
> <faultcode>SOAP-ENV:Server</faultcode>
> <faultstring>Bla bla bla</faultstring>
> </SOAP-ENV:Fault>
> </SOAP-ENV:Body>
> </SOAP-ENV:Envelope>
>
> would become
>
> <Envelope xmlns="..." SOAP-ENV="...">
> <Body>
> <Fault>
> <faultcode>SOAP-ENV:Server</faultcode>
> <faultstring>Bla bla bla</faultstring>
> </Fault>
> </Body>
> </Envelope>
>
> The problems here are:
>
> * xmlms:SOAP-ENV became simply SOAP-ENV... which is a non-existant
> attribute
> * faultcode and faultstring were unqualified elements and now are
> declared as being of the SOAP-ENV namespace
> * renaming the prefixes is not a recommended practice, and, in fact,
> you need to understand the specific XSD to do it, since QName types (the
> SOAP-ENV:Server value) care about the prefix.
>
While I agree that there are some bugs here, it seems like even if we
did preserve the prefixes your faultcode and faultstring elements would
be in the wrong namespace, because the default namespace within the XMPP
stream is jabber:client, jabber:server or whatever.
Is there something else we need to do here to make faultcode and
faultstring work as expected? I'm not really familiar with SOAP iself,
let alone SOAP over XMPP, so if I'm misunderstanding what's going on
here please let me know... I just want to make sure that we are indeed
addressing all of the prefix-related problems.
More information about the Djabberd
mailing list