changeset 5ba63540b68d in /home/hg/repos/python-nbxmpp details:http://hg.gajim.org/python-nbxmpp?cmd=changeset;node=5ba63540b68d description: hardcode error values in protocol.py
diffstat: nbxmpp/protocol.py | 376 +++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 308 insertions(+), 68 deletions(-) diffs (truncated from 389 to 300 lines): diff -r 5c97346d371c -r 5ba63540b68d nbxmpp/protocol.py --- a/nbxmpp/protocol.py Wed Jan 02 13:17:03 2013 +0100 +++ b/nbxmpp/protocol.py Wed Jan 02 13:51:30 2013 +0100 @@ -166,77 +166,317 @@ NS_HASHES_SHA256 = 'urn:xmpp:hash-function-textual-names:sha-256' NS_HASHES_SHA512 = 'urn:xmpp:hash-function-textual-names:sha-512' -xmpp_stream_error_conditions = ''' -bad-format -- -- -- The entity has sent XML that cannot be processed. -bad-namespace-prefix -- -- -- The entity has sent a namespace prefix that is unsupported, or has sent no namespace prefix on an element that requires such a prefix. -conflict -- -- -- The server is closing the active stream for this entity because a new stream has been initiated that conflicts with the existing stream. -connection-timeout -- -- -- The entity has not generated any traffic over the stream for some period of time. -host-gone -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header corresponds to a hostname that is no longer hosted by the server. -host-unknown -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header does not correspond to a hostname that is hosted by the server. -improper-addressing -- -- -- A stanza sent between two servers lacks a 'to' or 'from' attribute (or the attribute has no value). -internal-server-error -- -- -- The server has experienced a misconfiguration or an otherwise-undefined internal error that prevents it from servicing the stream. -invalid-from -- cancel -- -- The JID or hostname provided in a 'from' address does not match an authorized JID or validated domain negotiated between servers via SASL or dialback, or between a client and a server via authentication and resource authorization. -invalid-id -- -- -- The stream ID or dialback ID is invalid or does not match an ID previously provided. -invalid-namespace -- -- -- The streams namespace name is something other than "http://etherx.jabber.org/streams" or the dialback namespace name is something other than "jabber:server:dialback". -invalid-xml -- -- -- The entity has sent invalid XML over the stream to a server that performs validation. -not-authorized -- -- -- The entity has attempted to send data before the stream has been authenticated, or otherwise is not authorized to perform an action related to stream negotiation. -policy-violation -- -- -- The entity has violated some local service policy. -remote-connection-failed -- -- -- The server is unable to properly connect to a remote resource that is required for authentication or authorization. -resource-constraint -- -- -- The server lacks the system resources necessary to service the stream. -restricted-xml -- -- -- The entity has attempted to send restricted XML features such as a comment, processing instruction, DTD, entity reference, or unescaped character. -see-other-host -- -- -- The server will not provide service to the initiating entity but is redirecting traffic to another host. -system-shutdown -- -- -- The server is being shut down and all active streams are being closed. -undefined-condition -- -- -- The error condition is not one of those defined by the other conditions in this list. -unsupported-encoding -- -- -- The initiating entity has encoded the stream in an encoding that is not supported by the server. -unsupported-stanza-type -- -- -- The initiating entity has sent a first-level child of the stream that is not supported by the server. -unsupported-version -- -- -- The value of the 'version' attribute provided by the initiating entity in the stream header specifies a version of XMPP that is not supported by the server. -xml-not-well-formed -- -- -- The initiating entity has sent XML that is not well-formed.''' +#xmpp_stream_error_conditions = ''' +#bad-format -- -- -- The entity has sent XML that cannot be processed. +#bad-namespace-prefix -- -- -- The entity has sent a namespace prefix that is unsupported, or has sent no namespace prefix on an element that requires such a prefix. +#conflict -- -- -- The server is closing the active stream for this entity because a new stream has been initiated that conflicts with the existing stream. +#connection-timeout -- -- -- The entity has not generated any traffic over the stream for some period of time. +#host-gone -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header corresponds to a hostname that is no longer hosted by the server. +#host-unknown -- -- -- The value of the 'to' attribute provided by the initiating entity in the stream header does not correspond to a hostname that is hosted by the server. +#improper-addressing -- -- -- A stanza sent between two servers lacks a 'to' or 'from' attribute (or the attribute has no value). +#internal-server-error -- -- -- The server has experienced a misconfiguration or an otherwise-undefined internal error that prevents it from servicing the stream. +#invalid-from -- cancel -- -- The JID or hostname provided in a 'from' address does not match an authorized JID or validated domain negotiated between servers via SASL or dialback, or between a client and a server via authentication and resource authorization. +#invalid-id -- -- -- The stream ID or dialback ID is invalid or does not match an ID previously provided. +#invalid-namespace -- -- -- The streams namespace name is something other than "http://etherx.jabber.org/streams" or the dialback namespace name is something other than "jabber:server:dialback". +#invalid-xml -- -- -- The entity has sent invalid XML over the stream to a server that performs validation. +#not-authorized -- -- -- The entity has attempted to send data before the stream has been authenticated, or otherwise is not authorized to perform an action related to stream negotiation. +#policy-violation -- -- -- The entity has violated some local service policy. +#remote-connection-failed -- -- -- The server is unable to properly connect to a remote resource that is required for authentication or authorization. +#resource-constraint -- -- -- The server lacks the system resources necessary to service the stream. +#restricted-xml -- -- -- The entity has attempted to send restricted XML features such as a comment, processing instruction, DTD, entity reference, or unescaped character. +#see-other-host -- -- -- The server will not provide service to the initiating entity but is redirecting traffic to another host. +#system-shutdown -- -- -- The server is being shut down and all active streams are being closed. +#undefined-condition -- -- -- The error condition is not one of those defined by the other conditions in this list. +#unsupported-encoding -- -- -- The initiating entity has encoded the stream in an encoding that is not supported by the server. +#unsupported-stanza-type -- -- -- The initiating entity has sent a first-level child of the stream that is not supported by the server. +#unsupported-version -- -- -- The value of the 'version' attribute provided by the initiating entity in the stream header specifies a version of XMPP that is not supported by the server. +#xml-not-well-formed -- -- -- The initiating entity has sent XML that is not well-formed.''' -xmpp_stanza_error_conditions = ''' -bad-request -- 400 -- modify -- The sender has sent XML that is malformed or that cannot be processed. -conflict -- 409 -- cancel -- Access cannot be granted because an existing resource or session exists with the same name or address. -feature-not-implemented -- 501 -- cancel -- The feature requested is not implemented by the recipient or server and therefore cannot be processed. -forbidden -- 403 -- auth -- The requesting entity does not possess the required permissions to perform the action. -gone -- 302 -- modify -- The recipient or server can no longer be contacted at this address. -internal-server-error -- 500 -- wait -- The server could not process the stanza because of a misconfiguration or an otherwise-undefined internal server error. -item-not-found -- 404 -- cancel -- The addressed JID or item requested cannot be found. -jid-malformed -- 400 -- modify -- The value of the 'to' attribute in the sender's stanza does not adhere to the syntax defined in Addressing Scheme. -not-acceptable -- 406 -- cancel -- The recipient or server understands the request but is refusing to process it because it does not meet criteria defined by the recipient or server. -not-allowed -- 405 -- cancel -- The recipient or server does not allow any entity to perform the action. -not-authorized -- 401 -- auth -- The sender must provide proper credentials before being allowed to perform the action, or has provided improper credentials. -payment-required -- 402 -- auth -- The requesting entity is not authorized to access the requested service because payment is required. -recipient-unavailable -- 404 -- wait -- The intended recipient is temporarily unavailable. -redirect -- 302 -- modify -- The recipient or server is redirecting requests for this information to another entity. -registration-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because registration is required. -remote-server-not-found -- 404 -- cancel -- A remote server or service specified as part or all of the JID of the intended recipient does not exist. -remote-server-timeout -- 504 -- wait -- A remote server or service specified as part or all of the JID of the intended recipient could not be contacted within a reasonable amount of time. -resource-constraint -- 500 -- wait -- The server or recipient lacks the system resources necessary to service the request. -service-unavailable -- 503 -- cancel -- The server or recipient does not currently provide the requested service. -subscription-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because a subscription is required. -undefined-condition -- 500 -- -- Undefined Condition -unexpected-request -- 400 -- wait -- The recipient or server understood the request but was not expecting it at this time (e.g., the request was out of order).''' +#xmpp_stanza_error_conditions = ''' +#bad-request -- 400 -- modify -- The sender has sent XML that is malformed or that cannot be processed. +#conflict -- 409 -- cancel -- Access cannot be granted because an existing resource or session exists with the same name or address. +#feature-not-implemented -- 501 -- cancel -- The feature requested is not implemented by the recipient or server and therefore cannot be processed. +#forbidden -- 403 -- auth -- The requesting entity does not possess the required permissions to perform the action. +#gone -- 302 -- modify -- The recipient or server can no longer be contacted at this address. +#internal-server-error -- 500 -- wait -- The server could not process the stanza because of a misconfiguration or an otherwise-undefined internal server error. +#item-not-found -- 404 -- cancel -- The addressed JID or item requested cannot be found. +#jid-malformed -- 400 -- modify -- The value of the 'to' attribute in the sender's stanza does not adhere to the syntax defined in Addressing Scheme. +#not-acceptable -- 406 -- cancel -- The recipient or server understands the request but is refusing to process it because it does not meet criteria defined by the recipient or server. +#not-allowed -- 405 -- cancel -- The recipient or server does not allow any entity to perform the action. +#not-authorized -- 401 -- auth -- The sender must provide proper credentials before being allowed to perform the action, or has provided improper credentials. +#payment-required -- 402 -- auth -- The requesting entity is not authorized to access the requested service because payment is required. +#recipient-unavailable -- 404 -- wait -- The intended recipient is temporarily unavailable. +#redirect -- 302 -- modify -- The recipient or server is redirecting requests for this information to another entity. +#registration-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because registration is required. +#remote-server-not-found -- 404 -- cancel -- A remote server or service specified as part or all of the JID of the intended recipient does not exist. +#remote-server-timeout -- 504 -- wait -- A remote server or service specified as part or all of the JID of the intended recipient could not be contacted within a reasonable amount of time. +#resource-constraint -- 500 -- wait -- The server or recipient lacks the system resources necessary to service the request. +#service-unavailable -- 503 -- cancel -- The server or recipient does not currently provide the requested service. +#subscription-required -- 407 -- auth -- The requesting entity is not authorized to access the requested service because a subscription is required. +#undefined-condition -- 500 -- -- Undefined Condition +#unexpected-request -- 400 -- wait -- The recipient or server understood the request but was not expecting it at this time (e.g., the request was out of order).''' -sasl_error_conditions = ''' -aborted -- -- -- The receiving entity acknowledges an <abort/> element sent by the initiating entity; sent in reply to the <abort/> element. -incorrect-encoding -- -- -- The data provided by the initiating entity could not be processed because the [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect (e.g., because the encoding does not adhere to the definition in Section 3 of [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003.); sent in reply to a <response/> element or an <auth/> element with initial response data. -invalid-authzid -- -- -- The authzid provided by the initiating entity is invalid, either because it is incorrectly formatted or because the initiating entity does not have permissions to authorize that ID; sent in reply to a <response/> element or an <auth/> element with initial response data. -invalid-mechanism -- -- -- The initiating entity did not provide a mechanism or requested a mechanism that is not supported by the receiving entity; sent in reply to an <auth/> element. -mechanism-too-weak -- -- -- The mechanism requested by the initiating entity is weaker than server policy permits for that initiating entity; sent in reply to a <response/> element or an <auth/> element with initial response data. -not-authorized -- -- -- The authentication failed because the initiating entity did not provide valid credentials (this includes but is not limited to the case of an unknown username); sent in reply to a <response/> element or an <auth/> element with initial response data. -temporary-auth-failure -- -- -- The authentication failed because of a temporary error condition within the receiving entity; sent in reply to an <auth/> element or <response/> element.''' +#sasl_error_conditions = ''' +#aborted -- -- -- The receiving entity acknowledges an <abort/> element sent by the initiating entity; sent in reply to the <abort/> element. +#incorrect-encoding -- -- -- The data provided by the initiating entity could not be processed because the [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect (e.g., because the encoding does not adhere to the definition in Section 3 of [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003.); sent in reply to a <response/> element or an <auth/> element with initial response data. +#invalid-authzid -- -- -- The authzid provided by the initiating entity is invalid, either because it is incorrectly formatted or because the initiating entity does not have permissions to authorize that ID; sent in reply to a <response/> element or an <auth/> element with initial response data. +#invalid-mechanism -- -- -- The initiating entity did not provide a mechanism or requested a mechanism that is not supported by the receiving entity; sent in reply to an <auth/> element. +#mechanism-too-weak -- -- -- The mechanism requested by the initiating entity is weaker than server policy permits for that initiating entity; sent in reply to a <response/> element or an <auth/> element with initial response data. +#not-authorized -- -- -- The authentication failed because the initiating entity did not provide valid credentials (this includes but is not limited to the case of an unknown username); sent in reply to a <response/> element or an <auth/> element with initial response data. +#temporary-auth-failure -- -- -- The authentication failed because of a temporary error condition within the receiving entity; sent in reply to an <auth/> element or <response/> element.''' -ERRORS, _errorcodes = {}, {} -for ns, errname, errpool in ((NS_XMPP_STREAMS, 'STREAM', -xmpp_stream_error_conditions), (NS_STANZAS, 'ERR', xmpp_stanza_error_conditions), -(NS_SASL, 'SASL', sasl_error_conditions)): - for err in errpool.split('\n')[1:]: - cond, code, typ, text = err.split(' -- ') - name = errname + '_' + ascii_upper(cond).replace('-', '_') - locals()[name] = ns + ' ' + cond - ERRORS[ns + ' ' + cond] = [code, typ, text] - if code: - _errorcodes[code] = cond -del ns, errname, errpool, err, cond, code, typ, text +#ERRORS, _errorcodes, loc = {}, {}, {} +#for ns, errname, errpool in ((NS_XMPP_STREAMS, 'STREAM', +#xmpp_stream_error_conditions), (NS_STANZAS, 'ERR', xmpp_stanza_error_conditions), +#(NS_SASL, 'SASL', sasl_error_conditions)): + #for err in errpool.split('\n')[1:]: + #cond, code, typ, text = err.split(' -- ') + #name = errname + '_' + ascii_upper(cond).replace('-', '_') + #locals()[name] = ns + ' ' + cond + #loc[name] = ns + ' ' + cond + #ERRORS[ns + ' ' + cond] = [code, typ, text] + #if code: + #_errorcodes[code] = cond +#del ns, errname, errpool, err, cond, code, typ, text +#import pprint +#pprint.pprint(ERRORS) +#pprint.pprint(_errorcodes) +#for (k, v) in loc.items(): + #print('%s = \'%s\'' % (k, v)) + +ERRORS = { + 'urn:ietf:params:xml:ns:xmpp-sasl aborted': ['', + '', + 'The receiving entity acknowledges an <abort/> element sent by the initiating entity; sent in reply to the <abort/> element.'], + 'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding': ['', + '', + 'The data provided by the initiating entity could not be processed because the [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003. encoding is incorrect (e.g., because the encoding does not adhere to the definition in Section 3 of [BASE64]Josefsson, S., The Base16, Base32, and Base64 Data Encodings, July 2003.); sent in reply to a <response/> element or an <auth/> element with initial response data.'], + 'urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid': ['', + '', + 'The authzid provided by the initiating entity is invalid, either because it is incorrectly formatted or because the initiating entity does not have permissions to authorize that ID; sent in reply to a <response/> element or an <auth/> element with initial response data.'], + 'urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism': ['', + '', + 'The initiating entity did not provide a mechanism or requested a mechanism that is not supported by the receiving entity; sent in reply to an <auth/> element.'], + 'urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak': ['', + '', + 'The mechanism requested by the initiating entity is weaker than server policy permits for that initiating entity; sent in reply to a <response/> element or an <auth/> element with initial response data.'], + 'urn:ietf:params:xml:ns:xmpp-sasl not-authorized': ['', + '', + 'The authentication failed because the initiating entity did not provide valid credentials (this includes but is not limited to the case of an unknown username); sent in reply to a <response/> element or an <auth/> element with initial response data.'], + 'urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure': ['', + '', + 'The authentication failed because of a temporary error condition within the receiving entity; sent in reply to an <auth/> element or <response/> element.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas bad-request': ['400', + 'modify', + 'The sender has sent XML that is malformed or that cannot be processed.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas conflict': ['409', + 'cancel', + 'Access cannot be granted because an existing resource or session exists with the same name or address.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented': ['501', + 'cancel', + 'The feature requested is not implemented by the recipient or server and therefore cannot be processed.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas forbidden': ['403', + 'auth', + 'The requesting entity does not possess the required permissions to perform the action.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas gone': ['302', + 'modify', + 'The recipient or server can no longer be contacted at this address.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error': ['500', + 'wait', + 'The server could not process the stanza because of a misconfiguration or an otherwise-undefined internal server error.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas item-not-found': ['404', + 'cancel', + 'The addressed JID or item requested cannot be found.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed': ['400', + 'modify', + "The value of the 'to' attribute in the sender's stanza does not adhere to the syntax defined in Addressing Scheme."], + 'urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable': ['406', + 'cancel', + 'The recipient or server understands the request but is refusing to process it because it does not meet criteria defined by the recipient or server.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas not-allowed': ['405', + 'cancel', + 'The recipient or server does not allow any entity to perform the action.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas not-authorized': ['401', + 'auth', + 'The sender must provide proper credentials before being allowed to perform the action, or has provided improper credentials.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas payment-required': ['402', + 'auth', + 'The requesting entity is not authorized to access the requested service because payment is required.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable': ['404', + 'wait', + 'The intended recipient is temporarily unavailable.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas redirect': ['302', + 'modify', + 'The recipient or server is redirecting requests for this information to another entity.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas registration-required': ['407', + 'auth', + 'The requesting entity is not authorized to access the requested service because registration is required.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found': ['404', + 'cancel', + 'A remote server or service specified as part or all of the JID of the intended recipient does not exist.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout': ['504', + 'wait', + 'A remote server or service specified as part or all of the JID of the intended recipient could not be contacted within a reasonable amount of time.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint': ['500', + 'wait', + 'The server or recipient lacks the system resources necessary to service the request.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable': ['503', + 'cancel', + 'The server or recipient does not currently provide the requested service.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas subscription-required': ['407', + 'auth', + 'The requesting entity is not authorized to access the requested service because a subscription is required.'], + 'urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition': ['500', + '', + 'Undefined Condition'], + 'urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request': ['400', + 'wait', + 'The recipient or server understood the request but was not expecting it at this time (e.g., the request was out of order).'], + 'urn:ietf:params:xml:ns:xmpp-streams bad-format': ['', + '', + 'The entity has sent XML that cannot be processed.'], + 'urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix': ['', + '', + 'The entity has sent a namespace prefix that is unsupported, or has sent no namespace prefix on an element that requires such a prefix.'], + 'urn:ietf:params:xml:ns:xmpp-streams conflict': ['', + '', + 'The server is closing the active stream for this entity because a new stream has been initiated that conflicts with the existing stream.'], + 'urn:ietf:params:xml:ns:xmpp-streams connection-timeout': ['', + '', + 'The entity has not generated any traffic over the stream for some period of time.'], + 'urn:ietf:params:xml:ns:xmpp-streams host-gone': ['', + '', + "The value of the 'to' attribute provided by the initiating entity in the stream header corresponds to a hostname that is no longer hosted by the server."], + 'urn:ietf:params:xml:ns:xmpp-streams host-unknown': ['', + '', + "The value of the 'to' attribute provided by the initiating entity in the stream header does not correspond to a hostname that is hosted by the server."], + 'urn:ietf:params:xml:ns:xmpp-streams improper-addressing': ['', + '', + "A stanza sent between two servers lacks a 'to' or 'from' attribute (or the attribute has no value)."], + 'urn:ietf:params:xml:ns:xmpp-streams internal-server-error': ['', + '', + 'The server has experienced a misconfiguration or an otherwise-undefined internal error that prevents it from servicing the stream.'], + 'urn:ietf:params:xml:ns:xmpp-streams invalid-from': ['cancel', + '', + "The JID or hostname provided in a 'from' address does not match an authorized JID or validated domain negotiated between servers via SASL or dialback, or between a client and a server via authentication and resource authorization."], + 'urn:ietf:params:xml:ns:xmpp-streams invalid-id': ['', + '', + 'The stream ID or dialback ID is invalid or does not match an ID previously provided.'], + 'urn:ietf:params:xml:ns:xmpp-streams invalid-namespace': ['', + '', + 'The streams namespace name is something other than "http://etherx.jabber.org/streams" or the dialback namespace name is something other than "jabber:server:dialback".'], + 'urn:ietf:params:xml:ns:xmpp-streams invalid-xml': ['', + '', + 'The entity has sent invalid XML over the stream to a server that performs validation.'], + 'urn:ietf:params:xml:ns:xmpp-streams not-authorized': ['', + '', + 'The entity has attempted to send data before the stream has been authenticated, or otherwise is not authorized to perform an action related to stream negotiation.'], + 'urn:ietf:params:xml:ns:xmpp-streams policy-violation': ['', + '', + 'The entity has violated some local service policy.'], + 'urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed': ['', + '', + 'The server is unable to properly connect to a remote resource that is required for authentication or authorization.'], + 'urn:ietf:params:xml:ns:xmpp-streams resource-constraint': ['', + '', + 'The server lacks the system resources necessary to service the stream.'], + 'urn:ietf:params:xml:ns:xmpp-streams restricted-xml': ['', + '', + 'The entity has attempted to send restricted XML features such as a comment, processing instruction, DTD, entity reference, or unescaped character.'], + 'urn:ietf:params:xml:ns:xmpp-streams see-other-host': ['', + '', + 'The server will not provide service to the initiating entity but is redirecting traffic to another host.'], + 'urn:ietf:params:xml:ns:xmpp-streams system-shutdown': ['', + '', + 'The server is being shut down and all active streams are being closed.'], + 'urn:ietf:params:xml:ns:xmpp-streams undefined-condition': ['', + '', _______________________________________________ Commits mailing list [email protected] http://lists.gajim.org/cgi-bin/listinfo/commits
