Welcome to mirror list, hosted at ThFree Co, Russian Federation.

dev.gajim.org/gajim/python-nbxmpp.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYann Leboulanger <asterix@lagaule.org>2013-01-02 16:51:30 +0400
committerYann Leboulanger <asterix@lagaule.org>2013-01-02 16:51:30 +0400
commitfb1aa572f422cd641dbea43569b5304d001814e7 (patch)
treecf774938783f63c85c14683f3640b4b9c1ba7949
parent8e9d51df59c11d93c0995a086c6ab6a6009ce10e (diff)
hardcode error values in protocol.py
-rw-r--r--nbxmpp/protocol.py382
1 files changed, 311 insertions, 71 deletions
diff --git a/nbxmpp/protocol.py b/nbxmpp/protocol.py
index 2c5f363..94e0e7e 100644
--- a/nbxmpp/protocol.py
+++ b/nbxmpp/protocol.py
@@ -166,77 +166,317 @@ NS_HASHES_SHA1 = 'urn:xmpp:hash-function-textual-names:sha-1'
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_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.'''
-
-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
+#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).'''
+
+#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, 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': ['',
+ '',
+ 'The error condition is not one of those defined by the other conditions in this list.'],
+ 'urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding': ['',
+ '',
+ 'The initiating entity has encoded the stream in an encoding that is not supported by the server.'],
+ 'urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type': ['',
+ '',
+ 'The initiating entity has sent a first-level child of the stream that is not supported by the server.'],
+ 'urn:ietf:params:xml:ns:xmpp-streams 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."],
+ 'urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed': ['',
+ '',
+ 'The initiating entity has sent XML that is not well-formed.']
+}
+
+_errorcodes = {
+ '302': 'redirect',
+ '400': 'unexpected-request',
+ '401': 'not-authorized',
+ '402': 'payment-required',
+ '403': 'forbidden',
+ '404': 'remote-server-not-found',
+ '405': 'not-allowed',
+ '406': 'not-acceptable',
+ '407': 'subscription-required',
+ '409': 'conflict',
+ '500': 'undefined-condition',
+ '501': 'feature-not-implemented',
+ '503': 'service-unavailable',
+ '504': 'remote-server-timeout',
+ 'cancel': 'invalid-from'
+}
+
+STREAM_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-streams not-authorized'
+STREAM_REMOTE_CONNECTION_FAILED = 'urn:ietf:params:xml:ns:xmpp-streams remote-connection-failed'
+SASL_MECHANISM_TOO_WEAK = 'urn:ietf:params:xml:ns:xmpp-sasl mechanism-too-weak'
+STREAM_XML_NOT_WELL_FORMED = 'urn:ietf:params:xml:ns:xmpp-streams xml-not-well-formed'
+ERR_JID_MALFORMED = 'urn:ietf:params:xml:ns:xmpp-stanzas jid-malformed'
+STREAM_SEE_OTHER_HOST = 'urn:ietf:params:xml:ns:xmpp-streams see-other-host'
+STREAM_BAD_NAMESPACE_PREFIX = 'urn:ietf:params:xml:ns:xmpp-streams bad-namespace-prefix'
+ERR_SERVICE_UNAVAILABLE = 'urn:ietf:params:xml:ns:xmpp-stanzas service-unavailable'
+STREAM_CONNECTION_TIMEOUT = 'urn:ietf:params:xml:ns:xmpp-streams connection-timeout'
+STREAM_UNSUPPORTED_VERSION = 'urn:ietf:params:xml:ns:xmpp-streams unsupported-version'
+STREAM_IMPROPER_ADDRESSING = 'urn:ietf:params:xml:ns:xmpp-streams improper-addressing'
+STREAM_UNDEFINED_CONDITION = 'urn:ietf:params:xml:ns:xmpp-streams undefined-condition'
+SASL_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-sasl not-authorized'
+ERR_GONE = 'urn:ietf:params:xml:ns:xmpp-stanzas gone'
+SASL_TEMPORARY_AUTH_FAILURE = 'urn:ietf:params:xml:ns:xmpp-sasl temporary-auth-failure'
+ERR_REMOTE_SERVER_NOT_FOUND = 'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-not-found'
+ERR_UNEXPECTED_REQUEST = 'urn:ietf:params:xml:ns:xmpp-stanzas unexpected-request'
+ERR_RECIPIENT_UNAVAILABLE = 'urn:ietf:params:xml:ns:xmpp-stanzas recipient-unavailable'
+ERR_CONFLICT = 'urn:ietf:params:xml:ns:xmpp-stanzas conflict'
+STREAM_SYSTEM_SHUTDOWN = 'urn:ietf:params:xml:ns:xmpp-streams system-shutdown'
+STREAM_BAD_FORMAT = 'urn:ietf:params:xml:ns:xmpp-streams bad-format'
+ERR_SUBSCRIPTION_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanzas subscription-required'
+STREAM_INTERNAL_SERVER_ERROR = 'urn:ietf:params:xml:ns:xmpp-streams internal-server-error'
+ERR_NOT_AUTHORIZED = 'urn:ietf:params:xml:ns:xmpp-stanzas not-authorized'
+SASL_ABORTED = 'urn:ietf:params:xml:ns:xmpp-sasl aborted'
+ERR_REGISTRATION_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanzas registration-required'
+ERR_INTERNAL_SERVER_ERROR = 'urn:ietf:params:xml:ns:xmpp-stanzas internal-server-error'
+SASL_INCORRECT_ENCODING = 'urn:ietf:params:xml:ns:xmpp-sasl incorrect-encoding'
+STREAM_HOST_GONE = 'urn:ietf:params:xml:ns:xmpp-streams host-gone'
+STREAM_POLICY_VIOLATION = 'urn:ietf:params:xml:ns:xmpp-streams policy-violation'
+STREAM_INVALID_XML = 'urn:ietf:params:xml:ns:xmpp-streams invalid-xml'
+STREAM_CONFLICT = 'urn:ietf:params:xml:ns:xmpp-streams conflict'
+STREAM_RESOURCE_CONSTRAINT = 'urn:ietf:params:xml:ns:xmpp-streams resource-constraint'
+STREAM_UNSUPPORTED_ENCODING = 'urn:ietf:params:xml:ns:xmpp-streams unsupported-encoding'
+ERR_NOT_ALLOWED = 'urn:ietf:params:xml:ns:xmpp-stanzas not-allowed'
+ERR_ITEM_NOT_FOUND = 'urn:ietf:params:xml:ns:xmpp-stanzas item-not-found'
+ERR_NOT_ACCEPTABLE = 'urn:ietf:params:xml:ns:xmpp-stanzas not-acceptable'
+STREAM_INVALID_FROM = 'urn:ietf:params:xml:ns:xmpp-streams invalid-from'
+ERR_FEATURE_NOT_IMPLEMENTED = 'urn:ietf:params:xml:ns:xmpp-stanzas feature-not-implemented'
+ERR_BAD_REQUEST = 'urn:ietf:params:xml:ns:xmpp-stanzas bad-request'
+STREAM_INVALID_ID = 'urn:ietf:params:xml:ns:xmpp-streams invalid-id'
+STREAM_HOST_UNKNOWN = 'urn:ietf:params:xml:ns:xmpp-streams host-unknown'
+ERR_UNDEFINED_CONDITION = 'urn:ietf:params:xml:ns:xmpp-stanzas undefined-condition'
+SASL_INVALID_MECHANISM = 'urn:ietf:params:xml:ns:xmpp-sasl invalid-mechanism'
+STREAM_RESTRICTED_XML = 'urn:ietf:params:xml:ns:xmpp-streams restricted-xml'
+ERR_RESOURCE_CONSTRAINT = 'urn:ietf:params:xml:ns:xmpp-stanzas resource-constraint'
+ERR_REMOTE_SERVER_TIMEOUT = 'urn:ietf:params:xml:ns:xmpp-stanzas remote-server-timeout'
+SASL_INVALID_AUTHZID = 'urn:ietf:params:xml:ns:xmpp-sasl invalid-authzid'
+ERR_PAYMENT_REQUIRED = 'urn:ietf:params:xml:ns:xmpp-stanzas payment-required'
+STREAM_INVALID_NAMESPACE = 'urn:ietf:params:xml:ns:xmpp-streams invalid-namespace'
+ERR_REDIRECT = 'urn:ietf:params:xml:ns:xmpp-stanzas redirect'
+STREAM_UNSUPPORTED_STANZA_TYPE = 'urn:ietf:params:xml:ns:xmpp-streams unsupported-stanza-type'
+ERR_FORBIDDEN = 'urn:ietf:params:xml:ns:xmpp-stanzas forbidden'
def isResultNode(node):
"""