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:
Diffstat (limited to 'doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html')
-rw-r--r--doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html568
1 files changed, 272 insertions, 296 deletions
diff --git a/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html b/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html
index ef16fa2..49679d3 100644
--- a/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html
+++ b/doc/apidocs/nbxmpp.dispatcher_nb-pysrc.html
@@ -99,8 +99,7 @@ nbxmpp.plugin.PlugIn
nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-2', 'PlugIn', 'link-2');">PlugIn</a></tt> </tt>
<a name="L27"></a><tt class="py-lineno"> 27</tt> <tt class="py-line"><tt class="py-keyword">from</tt> <tt id="link-3" class="py-name" targets="Module nbxmpp.protocol=nbxmpp.protocol-module.html"><a title="nbxmpp.protocol" class="py-name" href="#" onclick="return doclink('link-3', 'protocol', 'link-3');">protocol</a></tt> <tt class="py-keyword">import</tt> <tt class="py-op">(</tt><tt id="link-4" class="py-name" targets="Variable nbxmpp.protocol.NS_STREAMS=nbxmpp.protocol-module.html#NS_STREAMS"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-4', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">,</tt> <tt id="link-5" class="py-name" targets="Variable nbxmpp.protocol.NS_XMPP_STREAMS=nbxmpp.protocol-module.html#NS_XMPP_STREAMS"><a title="nbxmpp.protocol.NS_XMPP_STREAMS" class="py-name" href="#" onclick="return doclink('link-5', 'NS_XMPP_STREAMS', 'link-5');">NS_XMPP_STREAMS</a></tt><tt class="py-op">,</tt> <tt id="link-6" class="py-name" targets="Variable nbxmpp.protocol.NS_HTTP_BIND=nbxmpp.protocol-module.html#NS_HTTP_BIND"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-6', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">,</tt> <tt id="link-7" class="py-name" targets="Class nbxmpp.protocol.Iq=nbxmpp.protocol.Iq-class.html"><a title="nbxmpp.protocol.Iq" class="py-name" href="#" onclick="return doclink('link-7', 'Iq', 'link-7');">Iq</a></tt><tt class="py-op">,</tt> <tt id="link-8" class="py-name" targets="Class nbxmpp.protocol.Presence=nbxmpp.protocol.Presence-class.html"><a title="nbxmpp.protocol.Presence" class="py-name" href="#" onclick="return doclink('link-8', 'Presence', 'link-8');">Presence</a></tt><tt class="py-op">,</tt> </tt>
<a name="L28"></a><tt class="py-lineno"> 28</tt> <tt class="py-line"> <tt id="link-9" class="py-name" targets="Class nbxmpp.protocol.Message=nbxmpp.protocol.Message-class.html"><a title="nbxmpp.protocol.Message" class="py-name" href="#" onclick="return doclink('link-9', 'Message', 'link-9');">Message</a></tt><tt class="py-op">,</tt> <tt id="link-10" class="py-name" targets="Class nbxmpp.protocol.Protocol=nbxmpp.protocol.Protocol-class.html"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-10', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt id="link-11" class="py-name" targets="Class nbxmpp.simplexml.Node=nbxmpp.simplexml.Node-class.html"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-11', 'Node', 'link-11');">Node</a></tt><tt class="py-op">,</tt> <tt id="link-12" class="py-name" targets="Class nbxmpp.protocol.Error=nbxmpp.protocol.Error-class.html,Class nbxmpp.tls_nb.SSLWrapper.Error=nbxmpp.tls_nb.SSLWrapper.Error-class.html"><a title="nbxmpp.protocol.Error
-nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-12', 'Error', 'link-12');">Error</a></tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Variable nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED=nbxmpp-module.html#ERR_FEATURE_NOT_IMPLEMENTED,Variable nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED=nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED"><a title="nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED
-nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-13', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Class nbxmpp.protocol.StreamError=nbxmpp.protocol.StreamError-class.html"><a title="nbxmpp.protocol.StreamError" class="py-name" href="#" onclick="return doclink('link-14', 'StreamError', 'link-14');">StreamError</a></tt><tt class="py-op">)</tt> </tt>
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-12', 'Error', 'link-12');">Error</a></tt><tt class="py-op">,</tt> <tt id="link-13" class="py-name" targets="Variable nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED=nbxmpp.protocol-module.html#ERR_FEATURE_NOT_IMPLEMENTED"><a title="nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-13', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">,</tt> <tt id="link-14" class="py-name" targets="Class nbxmpp.protocol.StreamError=nbxmpp.protocol.StreamError-class.html"><a title="nbxmpp.protocol.StreamError" class="py-name" href="#" onclick="return doclink('link-14', 'StreamError', 'link-14');">StreamError</a></tt><tt class="py-op">)</tt> </tt>
<a name="L29"></a><tt class="py-lineno"> 29</tt> <tt class="py-line"><tt class="py-keyword">import</tt> <tt class="py-name">logging</tt> </tt>
<a name="L30"></a><tt class="py-lineno"> 30</tt> <tt class="py-line"><tt id="link-15" class="py-name" targets="Variable nbxmpp.auth_nb.log=nbxmpp.auth_nb-module.html#log,Variable nbxmpp.bosh.log=nbxmpp.bosh-module.html#log,Variable nbxmpp.client_nb.log=nbxmpp.client_nb-module.html#log,Variable nbxmpp.dispatcher_nb.log=nbxmpp.dispatcher_nb-module.html#log,Variable nbxmpp.idlequeue.log=nbxmpp.idlequeue-module.html#log,Variable nbxmpp.plugin.log=nbxmpp.plugin-module.html#log,Variable nbxmpp.proxy_connectors.log=nbxmpp.proxy_connectors-module.html#log,Variable nbxmpp.roster_nb.log=nbxmpp.roster_nb-module.html#log,Variable nbxmpp.simplexml.log=nbxmpp.simplexml-module.html#log,Variable nbxmpp.smacks.log=nbxmpp.smacks-module.html#log,Variable nbxmpp.tls_nb.log=nbxmpp.tls_nb-module.html#log,Variable nbxmpp.transports_nb.log=nbxmpp.transports_nb-module.html#log"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
@@ -520,27 +519,20 @@ nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-89', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">'Registering handler %s for "%s" type-&gt;%s ns-&gt;%s(%s)'</tt> <tt class="py-op">%</tt> </tt>
-<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt id="link-90" class="py-name" targets="Variable nbxmpp.name=nbxmpp-module.html#name,Variable nbxmpp.protocol.name=nbxmpp.protocol-module.html#name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-90', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L303"></a><tt class="py-lineno">303</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
<a name="L304"></a><tt class="py-lineno">304</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">ns</tt><tt class="py-op">:</tt> </tt>
<a name="L305"></a><tt class="py-lineno">305</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt> </tt>
<a name="L306"></a><tt class="py-lineno">306</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
-<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-91', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
-<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-92" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-92', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-93', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt id="link-94" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-94', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt id="link-95" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-95', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
-<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-96" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-96', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-97" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-97', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
+<a name="L307"></a><tt class="py-lineno">307</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-90" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterNamespace" class="py-name" href="#" onclick="return doclink('link-90', 'RegisterNamespace', 'link-41');">RegisterNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
+<a name="L308"></a><tt class="py-lineno">308</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L309"></a><tt class="py-lineno">309</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-91" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterProtocol" class="py-name" href="#" onclick="return doclink('link-91', 'RegisterProtocol', 'link-32');">RegisterProtocol</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt id="link-92" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-92', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-string">'warn'</tt><tt class="py-op">)</tt> </tt>
+<a name="L310"></a><tt class="py-lineno">310</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L311"></a><tt class="py-lineno">311</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">=</tt><tt class="py-op">[</tt><tt class="py-op">]</tt> </tt>
<a name="L312"></a><tt class="py-lineno">312</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">makefirst</tt><tt class="py-op">:</tt> </tt>
-<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-98" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-98', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
+<a name="L313"></a><tt class="py-lineno">313</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
<a name="L314"></a><tt class="py-lineno">314</tt> <tt class="py-line"> <tt class="py-string">'system'</tt><tt class="py-op">:</tt><tt class="py-name">system</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
<a name="L315"></a><tt class="py-lineno">315</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-99" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-99', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
+<a name="L316"></a><tt class="py-lineno">316</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-op">{</tt><tt class="py-string">'func'</tt><tt class="py-op">:</tt><tt class="py-name">handler</tt><tt class="py-op">,</tt> </tt>
<a name="L317"></a><tt class="py-lineno">317</tt> <tt class="py-line"> <tt class="py-string">'system'</tt><tt class="py-op">:</tt><tt class="py-name">system</tt><tt class="py-op">}</tt><tt class="py-op">)</tt> </tt>
</div><a name="L318"></a><tt class="py-lineno">318</tt> <tt class="py-line"> </tt>
<a name="XMPPDispatcher.RegisterHandlerOnce"></a><div id="XMPPDispatcher.RegisterHandlerOnce-def"><a name="L319"></a><tt class="py-lineno">319</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterHandlerOnce-toggle" onclick="return toggle('XMPPDispatcher.RegisterHandlerOnce');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterHandlerOnce">RegisterHandlerOnce</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> </tt>
@@ -551,8 +543,7 @@ nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-99'
<a name="L324"></a><tt class="py-lineno">324</tt> <tt class="py-line"> <tt class="py-comment"># FIXME Drop or implement</tt> </tt>
<a name="L325"></a><tt class="py-lineno">325</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">xmlns</tt><tt class="py-op">:</tt> </tt>
<a name="L326"></a><tt class="py-lineno">326</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt> </tt>
-<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-100', 'RegisterHandler', 'link-25');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt id="link-101" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-101', 'name', 'link-90');">name</a></tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">makefirst</tt><tt class="py-op">,</tt> <tt class="py-name">system</tt><tt class="py-op">)</tt> </tt>
+<a name="L327"></a><tt class="py-lineno">327</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-93" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.RegisterHandler" class="py-name" href="#" onclick="return doclink('link-93', 'RegisterHandler', 'link-25');">RegisterHandler</a></tt><tt class="py-op">(</tt><tt class="py-name">name</tt><tt class="py-op">,</tt> <tt class="py-name">handler</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">,</tt> <tt class="py-name">ns</tt><tt class="py-op">,</tt> <tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">makefirst</tt><tt class="py-op">,</tt> <tt class="py-name">system</tt><tt class="py-op">)</tt> </tt>
</div><a name="L328"></a><tt class="py-lineno">328</tt> <tt class="py-line"> </tt>
<a name="XMPPDispatcher.UnregisterHandler"></a><div id="XMPPDispatcher.UnregisterHandler-def"><a name="L329"></a><tt class="py-lineno">329</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.UnregisterHandler-toggle" onclick="return toggle('XMPPDispatcher.UnregisterHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#UnregisterHandler">UnregisterHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">name</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">,</tt> <tt class="py-param">typ</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">ns</tt><tt class="py-op">=</tt><tt class="py-string">''</tt><tt class="py-op">,</tt> <tt class="py-param">xmlns</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XMPPDispatcher.UnregisterHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.UnregisterHandler-expanded"><a name="L330"></a><tt class="py-lineno">330</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
@@ -565,18 +556,14 @@ nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-101
<a name="L337"></a><tt class="py-lineno">337</tt> <tt class="py-line"> <tt class="py-name">typ</tt><tt class="py-op">=</tt><tt class="py-string">'default'</tt> </tt>
<a name="L338"></a><tt class="py-lineno">338</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
<a name="L339"></a><tt class="py-lineno">339</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-102" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-102', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L340"></a><tt class="py-lineno">340</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L341"></a><tt class="py-lineno">341</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-103" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-103', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L342"></a><tt class="py-lineno">342</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L343"></a><tt class="py-lineno">343</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-104" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-104', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L344"></a><tt class="py-lineno">344</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">pack</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
<a name="L345"></a><tt class="py-lineno">345</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">pack</tt><tt class="py-op">[</tt><tt class="py-string">'func'</tt><tt class="py-op">]</tt> <tt class="py-op">==</tt> <tt class="py-name">handler</tt><tt class="py-op">:</tt> </tt>
<a name="L346"></a><tt class="py-lineno">346</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-105" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-105', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">pack</tt><tt class="py-op">)</tt> </tt>
+<a name="L347"></a><tt class="py-lineno">347</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">ns</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">remove</tt><tt class="py-op">(</tt><tt class="py-name">pack</tt><tt class="py-op">)</tt> </tt>
<a name="L348"></a><tt class="py-lineno">348</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">ValueError</tt><tt class="py-op">:</tt> </tt>
<a name="L349"></a><tt class="py-lineno">349</tt> <tt class="py-line"> <tt class="py-keyword">pass</tt> </tt>
</div><a name="L350"></a><tt class="py-lineno">350</tt> <tt class="py-line"> </tt>
@@ -599,18 +586,17 @@ nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-105
<a name="L367"></a><tt class="py-lineno">367</tt> <tt class="py-line"><tt class="py-docstring"> Return stanza back to the sender with &lt;feature-not-implemented/&gt; error</tt> </tt>
<a name="L368"></a><tt class="py-lineno">368</tt> <tt class="py-line"><tt class="py-docstring"> set</tt> </tt>
<a name="L369"></a><tt class="py-lineno">369</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name" targets="Method nbxmpp.protocol.DataField.getType()=nbxmpp.protocol.DataField-class.html#getType,Method nbxmpp.protocol.DataForm.getType()=nbxmpp.protocol.DataForm-class.html#getType,Method nbxmpp.protocol.Protocol.getType()=nbxmpp.protocol.Protocol-class.html#getType"><a title="nbxmpp.protocol.DataField.getType
+<a name="L370"></a><tt class="py-lineno">370</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-94" class="py-name" targets="Method nbxmpp.protocol.DataField.getType()=nbxmpp.protocol.DataField-class.html#getType,Method nbxmpp.protocol.DataForm.getType()=nbxmpp.protocol.DataForm-class.html#getType,Method nbxmpp.protocol.Protocol.getType()=nbxmpp.protocol.Protocol-class.html#getType"><a title="nbxmpp.protocol.DataField.getType
nbxmpp.protocol.DataForm.getType
-nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-106', 'getType', 'link-106');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt class="py-string">'set'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-94', 'getType', 'link-94');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-op">(</tt><tt class="py-string">'get'</tt><tt class="py-op">,</tt> <tt class="py-string">'set'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L371"></a><tt class="py-lineno">371</tt> <tt class="py-line"> <tt class="py-name">conn</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-95" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
nbxmpp.dispatcher_nb.XMPPDispatcher.send
nbxmpp.tls_nb.PyOpenSSLWrapper.send
nbxmpp.tls_nb.SSLWrapper.send
nbxmpp.tls_nb.StdlibSSLWrapper.send
nbxmpp.transports_nb.NonBlockingTCP.send
-nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-107', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt id="link-108" class="py-name"><a title="nbxmpp.protocol.Error
-nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-108', 'Error', 'link-12');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-109" class="py-name"><a title="nbxmpp.ERR_FEATURE_NOT_IMPLEMENTED
-nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-109', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-95', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt id="link-96" class="py-name"><a title="nbxmpp.protocol.Error
+nbxmpp.tls_nb.SSLWrapper.Error" class="py-name" href="#" onclick="return doclink('link-96', 'Error', 'link-12');">Error</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-97" class="py-name"><a title="nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="return doclink('link-97', 'ERR_FEATURE_NOT_IMPLEMENTED', 'link-13');">ERR_FEATURE_NOT_IMPLEMENTED</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
</div><a name="L372"></a><tt class="py-lineno">372</tt> <tt class="py-line"> </tt>
<a name="XMPPDispatcher.RegisterCycleHandler"></a><div id="XMPPDispatcher.RegisterCycleHandler-def"><a name="L373"></a><tt class="py-lineno">373</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.RegisterCycleHandler-toggle" onclick="return toggle('XMPPDispatcher.RegisterCycleHandler');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#RegisterCycleHandler">RegisterCycleHandler</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">handler</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XMPPDispatcher.RegisterCycleHandler-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.RegisterCycleHandler-expanded"><a name="L374"></a><tt class="py-lineno">374</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
@@ -637,7 +623,7 @@ nbxmpp.protocol.ERR_FEATURE_NOT_IMPLEMENTED" class="py-name" href="#" onclick="r
<a name="L395"></a><tt class="py-lineno">395</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt><tt class="py-op">:</tt> </tt>
<a name="L396"></a><tt class="py-lineno">396</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_eventHandler</tt><tt class="py-op">(</tt><tt class="py-name">realm</tt><tt class="py-op">,</tt> <tt class="py-name">event</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
<a name="L397"></a><tt class="py-lineno">397</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt id="link-110" class="py-name"><a title="nbxmpp.auth_nb.log
+<a name="L398"></a><tt class="py-lineno">398</tt> <tt class="py-line"> <tt id="link-98" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -648,7 +634,7 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-110', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Received unhandled event: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-98', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warning</tt><tt class="py-op">(</tt><tt class="py-string">'Received unhandled event: %s'</tt> <tt class="py-op">%</tt> <tt class="py-name">event</tt><tt class="py-op">)</tt> </tt>
</div><a name="L399"></a><tt class="py-lineno">399</tt> <tt class="py-line"> </tt>
<a name="XMPPDispatcher.dispatch"></a><div id="XMPPDispatcher.dispatch-def"><a name="L400"></a><tt class="py-lineno">400</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.dispatch-toggle" onclick="return toggle('XMPPDispatcher.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">direct</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
</div><div id="XMPPDispatcher.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.dispatch-expanded"><a name="L401"></a><tt class="py-lineno">401</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
@@ -663,21 +649,22 @@ nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link
<a name="L410"></a><tt class="py-lineno">410</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">session</tt><tt class="py-op">:</tt> </tt>
<a name="L411"></a><tt class="py-lineno">411</tt> <tt class="py-line"> <tt class="py-name">session</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt> </tt>
<a name="L412"></a><tt class="py-lineno">412</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_mini_dom</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt id="link-111" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-111', 'name', 'link-90');">name</a></tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-112', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L413"></a><tt class="py-lineno">413</tt> <tt class="py-line"> <tt class="py-name">name</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-99" class="py-name" targets="Method nbxmpp.roster_nb.NonBlockingRoster.getName()=nbxmpp.roster_nb.NonBlockingRoster-class.html#getName,Method nbxmpp.simplexml.Node.getName()=nbxmpp.simplexml.Node-class.html#getName"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-99', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
<a name="L414"></a><tt class="py-lineno">414</tt> <tt class="py-line"> </tt>
-<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-113" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-113', 'name', 'link-90');">name</a></tt> <tt class="py-op">==</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
+<a name="L415"></a><tt class="py-lineno">415</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
<a name="L416"></a><tt class="py-lineno">416</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">got_features</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
<a name="L417"></a><tt class="py-lineno">417</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
-<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> </tt>
-<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-114" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-114', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> </tt>
-<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> <tt class="py-comment"># log.info('in dispatch, getting ns for %s, and the ns is %s'</tt> </tt>
-<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-comment"># % (stanza, xmlns))</tt> </tt>
-<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
-<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt id="link-115" class="py-name"><a title="nbxmpp.auth_nb.log
+<a name="L418"></a><tt class="py-lineno">418</tt> <tt class="py-line"> <tt class="py-keyword">elif</tt> <tt class="py-name">name</tt> <tt class="py-op">==</tt> <tt class="py-string">'error'</tt><tt class="py-op">:</tt> </tt>
+<a name="L419"></a><tt class="py-lineno">419</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-100" class="py-name" targets="Method nbxmpp.simplexml.Node.getTag()=nbxmpp.simplexml.Node-class.html#getTag"><a title="nbxmpp.simplexml.Node.getTag" class="py-name" href="#" onclick="return doclink('link-100', 'getTag', 'link-100');">getTag</a></tt><tt class="py-op">(</tt><tt class="py-string">'see-other-host'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L420"></a><tt class="py-lineno">420</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">got_see_other_host</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
+<a name="L421"></a><tt class="py-lineno">421</tt> <tt class="py-line"> </tt>
+<a name="L422"></a><tt class="py-lineno">422</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-101" class="py-name" targets="Method nbxmpp.simplexml.Node.getNamespace()=nbxmpp.simplexml.Node-class.html#getNamespace"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-101', 'getNamespace', 'link-101');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L423"></a><tt class="py-lineno">423</tt> <tt class="py-line"> </tt>
+<a name="L424"></a><tt class="py-lineno">424</tt> <tt class="py-line"> <tt class="py-comment"># log.info('in dispatch, getting ns for %s, and the ns is %s'</tt> </tt>
+<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-comment"># % (stanza, xmlns))</tt> </tt>
+<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">xmlns</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">:</tt> </tt>
+<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt id="link-102" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -688,14 +675,12 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-115', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown namespace: "</tt> <tt class="py-op">+</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
-<a name="L425"></a><tt class="py-lineno">425</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-string">'unknown'</tt> </tt>
-<a name="L426"></a><tt class="py-lineno">426</tt> <tt class="py-line"> <tt class="py-comment"># features stanza has been handled before</tt> </tt>
-<a name="L427"></a><tt class="py-lineno">427</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-116" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-116', 'name', 'link-90');">name</a></tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt id="link-117" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-117', 'name', 'link-90');">name</a></tt> <tt class="py-op">!=</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
-<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt id="link-118" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-102', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown namespace: "</tt> <tt class="py-op">+</tt> <tt class="py-name">xmlns</tt><tt class="py-op">)</tt> </tt>
+<a name="L428"></a><tt class="py-lineno">428</tt> <tt class="py-line"> <tt class="py-name">xmlns</tt> <tt class="py-op">=</tt> <tt class="py-string">'unknown'</tt> </tt>
+<a name="L429"></a><tt class="py-lineno">429</tt> <tt class="py-line"> <tt class="py-comment"># features stanza has been handled before</tt> </tt>
+<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">name</tt> <tt class="py-op">!=</tt> <tt class="py-string">'features'</tt><tt class="py-op">:</tt> </tt>
+<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt id="link-103" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -706,10 +691,9 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-118', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown stanza: "</tt> <tt class="py-op">+</tt> <tt id="link-119" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-119', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L430"></a><tt class="py-lineno">430</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L431"></a><tt class="py-lineno">431</tt> <tt class="py-line"> <tt id="link-120" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-103', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">warn</tt><tt class="py-op">(</tt><tt class="py-string">"Unknown stanza: "</tt> <tt class="py-op">+</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt> </tt>
+<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt id="link-104" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -720,12 +704,10 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-120', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt id="link-121" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-121', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L432"></a><tt class="py-lineno">432</tt> <tt class="py-line"> <tt id="link-122" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-122', 'name', 'link-90');">name</a></tt><tt class="py-op">=</tt><tt class="py-string">'unknown'</tt> </tt>
-<a name="L433"></a><tt class="py-lineno">433</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L434"></a><tt class="py-lineno">434</tt> <tt class="py-line"> <tt id="link-123" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-104', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> <tt class="py-name">name</tt><tt class="py-op">=</tt><tt class="py-string">'unknown'</tt> </tt>
+<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt id="link-105" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -736,55 +718,49 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-123', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt id="link-124" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-124', 'name', 'link-90');">name</a></tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L435"></a><tt class="py-lineno">435</tt> <tt class="py-line"> </tt>
-<a name="L436"></a><tt class="py-lineno">436</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'Node'</tt><tt class="py-op">:</tt> </tt>
-<a name="L437"></a><tt class="py-lineno">437</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: this cannot work</tt> </tt>
-<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-125" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-125', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
-<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> </tt>
-<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="nbxmpp.protocol.DataField.getType
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-105', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Got %s/%s stanza"</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt class="py-name">xmlns</tt><tt class="py-op">,</tt> <tt class="py-name">name</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L438"></a><tt class="py-lineno">438</tt> <tt class="py-line"> </tt>
+<a name="L439"></a><tt class="py-lineno">439</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">==</tt> <tt class="py-string">'Node'</tt><tt class="py-op">:</tt> </tt>
+<a name="L440"></a><tt class="py-lineno">440</tt> <tt class="py-line"> <tt class="py-comment"># FIXME: this cannot work</tt> </tt>
+<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">node</tt><tt class="py-op">=</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> </tt>
+<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-106" class="py-name"><a title="nbxmpp.protocol.DataField.getType
nbxmpp.protocol.DataForm.getType
-nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-126', 'getType', 'link-106');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L441"></a><tt class="py-lineno">441</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
-<a name="L442"></a><tt class="py-lineno">442</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
-<a name="L443"></a><tt class="py-lineno">443</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name" targets="Method nbxmpp.protocol.Protocol.getProperties()=nbxmpp.protocol.Protocol-class.html#getProperties"><a title="nbxmpp.protocol.Protocol.getProperties" class="py-name" href="#" onclick="return doclink('link-127', 'getProperties', 'link-127');">getProperties</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method nbxmpp.protocol.Protocol.getID()=nbxmpp.protocol.Protocol-class.html#getID"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-128', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> </tt>
-<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-comment"># If server supports stream management</tt> </tt>
-<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-129', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'r'</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-130', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'a'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-131', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'enabled'</tt> <tt class="py-keyword">and</tt> </tt>
-<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-132" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-132', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'resumed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-comment"># increments the number of stanzas that has been handled</tt> </tt>
-<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
-<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">list_</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> <tt class="py-comment"># we will use all handlers:</tt> </tt>
-<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-133" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-133', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> <tt class="py-comment"># from very common...</tt> </tt>
-<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt><tt class="py-op">:</tt> </tt>
-<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-134" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-134', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> </tt>
-<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-135" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-135', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> <tt class="py-comment"># ...to very particular</tt> </tt>
-<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> </tt>
-<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> </tt>
-<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_</tt><tt class="py-op">:</tt> </tt>
-<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
-<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">chain</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt id="link-136" class="py-name"><a title="nbxmpp.name
-nbxmpp.protocol.name" class="py-name" href="#" onclick="return doclink('link-136', 'name', 'link-90');">name</a></tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
-<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> </tt>
-<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">in</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">:</tt> </tt>
-<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
-<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> </tt>
-<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt id="link-137" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.protocol.Protocol.getType" class="py-name" href="#" onclick="return doclink('link-106', 'getType', 'link-94');">getType</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L444"></a><tt class="py-lineno">444</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L445"></a><tt class="py-lineno">445</tt> <tt class="py-line"> <tt class="py-name">typ</tt> <tt class="py-op">=</tt> <tt class="py-string">''</tt> </tt>
+<a name="L446"></a><tt class="py-lineno">446</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-107" class="py-name" targets="Method nbxmpp.protocol.Protocol.getProperties()=nbxmpp.protocol.Protocol-class.html#getProperties"><a title="nbxmpp.protocol.Protocol.getProperties" class="py-name" href="#" onclick="return doclink('link-107', 'getProperties', 'link-107');">getProperties</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L447"></a><tt class="py-lineno">447</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-108" class="py-name" targets="Method nbxmpp.protocol.Protocol.getID()=nbxmpp.protocol.Protocol-class.html#getID"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-108', 'getID', 'link-108');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L448"></a><tt class="py-lineno">448</tt> <tt class="py-line"> </tt>
+<a name="L449"></a><tt class="py-lineno">449</tt> <tt class="py-line"> <tt class="py-comment"># If server supports stream management</tt> </tt>
+<a name="L450"></a><tt class="py-lineno">450</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-109" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-109', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'r'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L451"></a><tt class="py-lineno">451</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-110" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-110', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'a'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-111" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-111', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'enabled'</tt> <tt class="py-keyword">and</tt> </tt>
+<a name="L452"></a><tt class="py-lineno">452</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-112" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-112', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">!=</tt> <tt class="py-string">'resumed'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L453"></a><tt class="py-lineno">453</tt> <tt class="py-line"> <tt class="py-comment"># increments the number of stanzas that has been handled</tt> </tt>
+<a name="L454"></a><tt class="py-lineno">454</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">in_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L455"></a><tt class="py-lineno">455</tt> <tt class="py-line"> <tt class="py-name">list_</tt> <tt class="py-op">=</tt> <tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> <tt class="py-comment"># we will use all handlers:</tt> </tt>
+<a name="L456"></a><tt class="py-lineno">456</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L457"></a><tt class="py-lineno">457</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">)</tt> <tt class="py-comment"># from very common...</tt> </tt>
+<a name="L458"></a><tt class="py-lineno">458</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt class="py-name">props</tt><tt class="py-op">:</tt> </tt>
+<a name="L459"></a><tt class="py-lineno">459</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L460"></a><tt class="py-lineno">460</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> </tt>
+<a name="L461"></a><tt class="py-lineno">461</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt> <tt class="py-keyword">and</tt> <tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L462"></a><tt class="py-lineno">462</tt> <tt class="py-line"> <tt class="py-name">list_</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">typ</tt><tt class="py-op">+</tt><tt class="py-name">prop</tt><tt class="py-op">)</tt> <tt class="py-comment"># ...to very particular</tt> </tt>
+<a name="L463"></a><tt class="py-lineno">463</tt> <tt class="py-line"> </tt>
+<a name="L464"></a><tt class="py-lineno">464</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-string">'default'</tt><tt class="py-op">]</tt> </tt>
+<a name="L465"></a><tt class="py-lineno">465</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">key</tt> <tt class="py-keyword">in</tt> <tt class="py-name">list_</tt><tt class="py-op">:</tt> </tt>
+<a name="L466"></a><tt class="py-lineno">466</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">key</tt><tt class="py-op">:</tt> </tt>
+<a name="L467"></a><tt class="py-lineno">467</tt> <tt class="py-line"> <tt class="py-name">chain</tt> <tt class="py-op">=</tt> <tt class="py-name">chain</tt> <tt class="py-op">+</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">handlers</tt><tt class="py-op">[</tt><tt class="py-name">xmlns</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">name</tt><tt class="py-op">]</tt><tt class="py-op">[</tt><tt class="py-name">key</tt><tt class="py-op">]</tt> </tt>
+<a name="L468"></a><tt class="py-lineno">468</tt> <tt class="py-line"> </tt>
+<a name="L469"></a><tt class="py-lineno">469</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">in</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">:</tt> </tt>
+<a name="L470"></a><tt class="py-lineno">470</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">0</tt> </tt>
+<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">tuple</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> </tt>
+<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt id="link-113" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -795,15 +771,15 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-137', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived. Callback %s(%s) found!"</tt> <tt class="py-op">%</tt> </tt>
-<a name="L471"></a><tt class="py-lineno">471</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L472"></a><tt class="py-lineno">472</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L473"></a><tt class="py-lineno">473</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
-<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
-<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
-<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt id="link-138" class="py-name"><a title="nbxmpp.auth_nb.log
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-113', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived. Callback %s(%s) found!"</tt> <tt class="py-op">%</tt> </tt>
+<a name="L474"></a><tt class="py-lineno">474</tt> <tt class="py-line"> <tt class="py-op">(</tt><tt class="py-name">cb</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L475"></a><tt class="py-lineno">475</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L476"></a><tt class="py-lineno">476</tt> <tt class="py-line"> <tt class="py-name">cb</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt><tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L477"></a><tt class="py-lineno">477</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L478"></a><tt class="py-lineno">478</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-keyword">raise</tt> </tt>
+<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt id="link-114" class="py-name"><a title="nbxmpp.auth_nb.log
nbxmpp.bosh.log
nbxmpp.client_nb.log
nbxmpp.dispatcher_nb.log
@@ -814,196 +790,196 @@ nbxmpp.roster_nb.log
nbxmpp.simplexml.log
nbxmpp.smacks.log
nbxmpp.tls_nb.log
-nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-138', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived!"</tt><tt class="py-op">)</tt> </tt>
-<a name="L479"></a><tt class="py-lineno">479</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
-<a name="L480"></a><tt class="py-lineno">480</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L481"></a><tt class="py-lineno">481</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
-<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chain</tt><tt class="py-op">:</tt> </tt>
-<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">or</tt> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'system'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
-<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'func'</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
-<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
-<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
-<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> </tt>
-<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">:</tt> </tt>
-<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> </tt>
-<a name="XMPPDispatcher._WaitForData"></a><div id="XMPPDispatcher._WaitForData-def"><a name="L494"></a><tt class="py-lineno">494</tt> <a class="py-toggle" href="#" id="XMPPDispatcher._WaitForData-toggle" onclick="return toggle('XMPPDispatcher._WaitForData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData">_WaitForData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="XMPPDispatcher._WaitForData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher._WaitForData-expanded"><a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"><tt class="py-docstring"> Internal wrapper around ProcessNonBlocking. Will check for</tt> </tt>
-<a name="L497"></a><tt class="py-lineno">497</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
-nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-139', 'ProcessNonBlocking', 'link-139');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
-<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-comment"># 0 result indicates that we have closed the connection, e.g.</tt> </tt>
-<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-comment"># we have released dispatcher, so self._owner has no methods</tt> </tt>
-<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt>
-<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
-<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">_id</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_iq</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-comment"># If the expected Stanza would have arrived, ProcessNonBlocking</tt> </tt>
-<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-comment"># would have placed the reply stanza in there</tt> </tt>
-<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
-<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">:</tt> </tt>
-<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
-<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-140" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
-nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-140', 'onreceive', 'link-140');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
-<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
-<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">_iq</tt><tt class="py-op">)</tt> </tt>
-<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
-</div><a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> </tt>
-<a name="XMPPDispatcher.SendAndWaitForResponse"></a><div id="XMPPDispatcher.SendAndWaitForResponse-def"><a name="L521"></a><tt class="py-lineno">521</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndWaitForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndWaitForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse">SendAndWaitForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="XMPPDispatcher.SendAndWaitForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndWaitForResponse-expanded"><a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"><tt class="py-docstring"> Send stanza and wait for recipient's response to it. Will call transports</tt> </tt>
-<a name="L524"></a><tt class="py-lineno">524</tt> <tt class="py-line"><tt class="py-docstring"> on_timeout callback if response is not retrieved in time</tt> </tt>
-<a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
-<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> Be aware: Only timeout of latest call of SendAndWait is active.</tt> </tt>
-<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt id="link-141" class="py-name"><a title="nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-141', 'DEFAULT_TIMEOUT_SECONDS', 'link-16');">DEFAULT_TIMEOUT_SECONDS</a></tt> </tt>
-<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"> <tt class="py-name">_waitid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.transports_nb.log" class="py-name" href="#" onclick="return doclink('link-114', 'log', 'link-15');">log</a></tt><tt class="py-op">.</tt><tt class="py-name">debug</tt><tt class="py-op">(</tt><tt class="py-string">"Expected stanza arrived!"</tt><tt class="py-op">)</tt> </tt>
+<a name="L482"></a><tt class="py-lineno">482</tt> <tt class="py-line"> <tt class="py-name">session</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">ID</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt> </tt>
+<a name="L483"></a><tt class="py-lineno">483</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L484"></a><tt class="py-lineno">484</tt> <tt class="py-line"> <tt class="py-name">user</tt> <tt class="py-op">=</tt> <tt class="py-number">1</tt> </tt>
+<a name="L485"></a><tt class="py-lineno">485</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">handler</tt> <tt class="py-keyword">in</tt> <tt class="py-name">chain</tt><tt class="py-op">:</tt> </tt>
+<a name="L486"></a><tt class="py-lineno">486</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">or</tt> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'system'</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L487"></a><tt class="py-lineno">487</tt> <tt class="py-line"> <tt class="py-keyword">try</tt><tt class="py-op">:</tt> </tt>
+<a name="L488"></a><tt class="py-lineno">488</tt> <tt class="py-line"> <tt class="py-name">handler</tt><tt class="py-op">[</tt><tt class="py-string">'func'</tt><tt class="py-op">]</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L489"></a><tt class="py-lineno">489</tt> <tt class="py-line"> <tt class="py-keyword">except</tt> <tt class="py-name">Exception</tt><tt class="py-op">,</tt> <tt class="py-name">typ</tt><tt class="py-op">:</tt> </tt>
+<a name="L490"></a><tt class="py-lineno">490</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">typ</tt><tt class="py-op">.</tt><tt class="py-name">__class__</tt><tt class="py-op">.</tt><tt class="py-name">__name__</tt> <tt class="py-op">!=</tt> <tt class="py-string">'NodeProcessed'</tt><tt class="py-op">:</tt> </tt>
+<a name="L491"></a><tt class="py-lineno">491</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_pendingExceptions</tt><tt class="py-op">.</tt><tt class="py-name">insert</tt><tt class="py-op">(</tt><tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">sys</tt><tt class="py-op">.</tt><tt class="py-name">exc_info</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L492"></a><tt class="py-lineno">492</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L493"></a><tt class="py-lineno">493</tt> <tt class="py-line"> <tt class="py-name">user</tt><tt class="py-op">=</tt><tt class="py-number">0</tt> </tt>
+<a name="L494"></a><tt class="py-lineno">494</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">user</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">:</tt> </tt>
+<a name="L495"></a><tt class="py-lineno">495</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_defaultHandler</tt><tt class="py-op">(</tt><tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L496"></a><tt class="py-lineno">496</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher._WaitForData"></a><div id="XMPPDispatcher._WaitForData-def"><a name="L497"></a><tt class="py-lineno">497</tt> <a class="py-toggle" href="#" id="XMPPDispatcher._WaitForData-toggle" onclick="return toggle('XMPPDispatcher._WaitForData');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData">_WaitForData</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher._WaitForData-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher._WaitForData-expanded"><a name="L498"></a><tt class="py-lineno">498</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L499"></a><tt class="py-lineno">499</tt> <tt class="py-line"><tt class="py-docstring"> Internal wrapper around ProcessNonBlocking. Will check for</tt> </tt>
+<a name="L500"></a><tt class="py-lineno">500</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L501"></a><tt class="py-lineno">501</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">data</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L502"></a><tt class="py-lineno">502</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L503"></a><tt class="py-lineno">503</tt> <tt class="py-line"> <tt class="py-name">res</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-115" class="py-name" targets="Method nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking,Method nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#ProcessNonBlocking"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-115', 'ProcessNonBlocking', 'link-115');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L504"></a><tt class="py-lineno">504</tt> <tt class="py-line"> <tt class="py-comment"># 0 result indicates that we have closed the connection, e.g.</tt> </tt>
+<a name="L505"></a><tt class="py-lineno">505</tt> <tt class="py-line"> <tt class="py-comment"># we have released dispatcher, so self._owner has no methods</tt> </tt>
+<a name="L506"></a><tt class="py-lineno">506</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-keyword">not</tt> <tt class="py-name">res</tt><tt class="py-op">:</tt> </tt>
+<a name="L507"></a><tt class="py-lineno">507</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> </tt>
+<a name="L508"></a><tt class="py-lineno">508</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-op">(</tt><tt class="py-name">_id</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">)</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">.</tt><tt class="py-name">items</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L509"></a><tt class="py-lineno">509</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_iq</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L510"></a><tt class="py-lineno">510</tt> <tt class="py-line"> <tt class="py-comment"># If the expected Stanza would have arrived, ProcessNonBlocking</tt> </tt>
+<a name="L511"></a><tt class="py-lineno">511</tt> <tt class="py-line"> <tt class="py-comment"># would have placed the reply stanza in there</tt> </tt>
+<a name="L512"></a><tt class="py-lineno">512</tt> <tt class="py-line"> <tt class="py-keyword">continue</tt> </tt>
+<a name="L513"></a><tt class="py-lineno">513</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">_id</tt> <tt class="py-keyword">in</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">:</tt> </tt>
+<a name="L514"></a><tt class="py-lineno">514</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-number">1</tt><tt class="py-op">:</tt> </tt>
+<a name="L515"></a><tt class="py-lineno">515</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-116" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.onreceive()=nbxmpp.bosh.NonBlockingBOSH-class.html#onreceive,Method nbxmpp.transports_nb.NonBlockingTransport.onreceive()=nbxmpp.transports_nb.NonBlockingTransport-class.html#onreceive"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-116', 'onreceive', 'link-116');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">None</tt><tt class="py-op">)</tt> </tt>
+<a name="L516"></a><tt class="py-lineno">516</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L517"></a><tt class="py-lineno">517</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+<a name="L518"></a><tt class="py-lineno">518</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">args</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L519"></a><tt class="py-lineno">519</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">_iq</tt><tt class="py-op">)</tt> </tt>
+<a name="L520"></a><tt class="py-lineno">520</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L521"></a><tt class="py-lineno">521</tt> <tt class="py-line"> <tt class="py-name">resp</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">,</tt> <tt class="py-name">_iq</tt><tt class="py-op">,</tt> <tt class="py-op">**</tt><tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L522"></a><tt class="py-lineno">522</tt> <tt class="py-line"> <tt class="py-keyword">del</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_id</tt><tt class="py-op">]</tt> </tt>
+</div><a name="L523"></a><tt class="py-lineno">523</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.SendAndWaitForResponse"></a><div id="XMPPDispatcher.SendAndWaitForResponse-def"><a name="L524"></a><tt class="py-lineno">524</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndWaitForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndWaitForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndWaitForResponse">SendAndWaitForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">timeout</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.SendAndWaitForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndWaitForResponse-expanded"><a name="L525"></a><tt class="py-lineno">525</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L526"></a><tt class="py-lineno">526</tt> <tt class="py-line"><tt class="py-docstring"> Send stanza and wait for recipient's response to it. Will call transports</tt> </tt>
+<a name="L527"></a><tt class="py-lineno">527</tt> <tt class="py-line"><tt class="py-docstring"> on_timeout callback if response is not retrieved in time</tt> </tt>
+<a name="L528"></a><tt class="py-lineno">528</tt> <tt class="py-line"><tt class="py-docstring"></tt> </tt>
+<a name="L529"></a><tt class="py-lineno">529</tt> <tt class="py-line"><tt class="py-docstring"> Be aware: Only timeout of latest call of SendAndWait is active.</tt> </tt>
+<a name="L530"></a><tt class="py-lineno">530</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">timeout</tt> <tt class="py-op">=</tt> <tt id="link-117" class="py-name"><a title="nbxmpp.dispatcher_nb.DEFAULT_TIMEOUT_SECONDS" class="py-name" href="#" onclick="return doclink('link-117', 'DEFAULT_TIMEOUT_SECONDS', 'link-16');">DEFAULT_TIMEOUT_SECONDS</a></tt> </tt>
+<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-name">_waitid</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-118" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
nbxmpp.dispatcher_nb.XMPPDispatcher.send
nbxmpp.tls_nb.PyOpenSSLWrapper.send
nbxmpp.tls_nb.SSLWrapper.send
nbxmpp.tls_nb.StdlibSSLWrapper.send
nbxmpp.transports_nb.NonBlockingTCP.send
-nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-142', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
-<a name="L531"></a><tt class="py-lineno">531</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">func</tt><tt class="py-op">:</tt> </tt>
-<a name="L532"></a><tt class="py-lineno">532</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-<a name="L533"></a><tt class="py-lineno">533</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
-<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.set_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.set_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-118', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L534"></a><tt class="py-lineno">534</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">func</tt><tt class="py-op">:</tt> </tt>
+<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">on_responses</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-op">(</tt><tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">timeout</tt><tt class="py-op">:</tt> </tt>
+<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-119" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.set_timeout()=nbxmpp.bosh.NonBlockingBOSH-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTCP.set_timeout()=nbxmpp.transports_nb.NonBlockingTCP-class.html#set_timeout,Method nbxmpp.transports_nb.NonBlockingTransport.set_timeout()=nbxmpp.transports_nb.NonBlockingTransport-class.html#set_timeout"><a title="nbxmpp.bosh.NonBlockingBOSH.set_timeout
nbxmpp.transports_nb.NonBlockingTCP.set_timeout
-nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-143', 'set_timeout', 'link-143');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
-<a name="L535"></a><tt class="py-lineno">535</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-144" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
-nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-144', 'onreceive', 'link-140');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData" class="py-name" href="#" onclick="return doclink('link-145', '_WaitForData', 'link-145');">_WaitForData</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L536"></a><tt class="py-lineno">536</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L537"></a><tt class="py-lineno">537</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_waitid</tt> </tt>
-</div><a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> </tt>
-<a name="XMPPDispatcher.SendAndCallForResponse"></a><div id="XMPPDispatcher.SendAndCallForResponse-def"><a name="L539"></a><tt class="py-lineno">539</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndCallForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndCallForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse">SendAndCallForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="XMPPDispatcher.SendAndCallForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndCallForResponse-expanded"><a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"><tt class="py-docstring"> Put stanza on the wire and call back when recipient replies. Additional</tt> </tt>
-<a name="L542"></a><tt class="py-lineno">542</tt> <tt class="py-line"><tt class="py-docstring"> callback arguments can be specified in args</tt> </tt>
-<a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-146', 'SendAndWaitForResponse', 'link-33');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"> </tt>
-<a name="XMPPDispatcher.send"></a><div id="XMPPDispatcher.send-def"><a name="L546"></a><tt class="py-lineno">546</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.send-toggle" onclick="return toggle('XMPPDispatcher.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="XMPPDispatcher.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.send-expanded"><a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"><tt class="py-docstring"> Wrap transports send method when plugged into NonBlockingClient. Makes</tt> </tt>
-<a name="L549"></a><tt class="py-lineno">549</tt> <tt class="py-line"><tt class="py-docstring"> sure stanzas get ID and from tag.</tt> </tt>
-<a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
-<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-147" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-147', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-148', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
-<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name" targets="Method nbxmpp.protocol.Protocol.setID()=nbxmpp.protocol.Protocol-class.html#setID"><a title="nbxmpp.protocol.Protocol.setID" class="py-name" href="#" onclick="return doclink('link-149', 'setID', 'link-149');">setID</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" class="py-name" href="#" onclick="return doclink('link-150', 'getAnID', 'link-35');">getAnID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-151" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-151', 'getID', 'link-128');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-152" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-152', 'getAttr', 'link-152');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-153', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt><tt class="py-op">)</tt> </tt>
-<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> </tt>
-<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-comment"># If no ID then it is a whitespace</tt> </tt>
-<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ID</tt><tt class="py-op">:</tt> </tt>
-<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
-<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
-<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">max_queue</tt><tt class="py-op">:</tt> </tt>
-<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name" targets="Method nbxmpp.smacks.Smacks.request_ack()=nbxmpp.smacks.Smacks-class.html#request_ack"><a title="nbxmpp.smacks.Smacks.request_ack" class="py-name" href="#" onclick="return doclink('link-154', 'request_ack', 'link-154');">request_ack</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> </tt>
-<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
+nbxmpp.transports_nb.NonBlockingTransport.set_timeout" class="py-name" href="#" onclick="return doclink('link-119', 'set_timeout', 'link-119');">set_timeout</a></tt><tt class="py-op">(</tt><tt class="py-name">timeout</tt><tt class="py-op">)</tt> </tt>
+<a name="L538"></a><tt class="py-lineno">538</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt id="link-120" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.onreceive
+nbxmpp.transports_nb.NonBlockingTransport.onreceive" class="py-name" href="#" onclick="return doclink('link-120', 'onreceive', 'link-116');">onreceive</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-121" class="py-name" targets="Method nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData()=nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#_WaitForData"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._WaitForData" class="py-name" href="#" onclick="return doclink('link-121', '_WaitForData', 'link-121');">_WaitForData</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L539"></a><tt class="py-lineno">539</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_expected</tt><tt class="py-op">[</tt><tt class="py-name">_waitid</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L540"></a><tt class="py-lineno">540</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">_waitid</tt> </tt>
+</div><a name="L541"></a><tt class="py-lineno">541</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.SendAndCallForResponse"></a><div id="XMPPDispatcher.SendAndCallForResponse-def"><a name="L542"></a><tt class="py-lineno">542</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.SendAndCallForResponse-toggle" onclick="return toggle('XMPPDispatcher.SendAndCallForResponse');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#SendAndCallForResponse">SendAndCallForResponse</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">func</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">args</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.SendAndCallForResponse-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.SendAndCallForResponse-expanded"><a name="L543"></a><tt class="py-lineno">543</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L544"></a><tt class="py-lineno">544</tt> <tt class="py-line"><tt class="py-docstring"> Put stanza on the wire and call back when recipient replies. Additional</tt> </tt>
+<a name="L545"></a><tt class="py-lineno">545</tt> <tt class="py-line"><tt class="py-docstring"> callback arguments can be specified in args</tt> </tt>
+<a name="L546"></a><tt class="py-lineno">546</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L547"></a><tt class="py-lineno">547</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-122" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.SendAndWaitForResponse" class="py-name" href="#" onclick="return doclink('link-122', 'SendAndWaitForResponse', 'link-33');">SendAndWaitForResponse</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-number">0</tt><tt class="py-op">,</tt> <tt class="py-name">func</tt><tt class="py-op">,</tt> <tt class="py-name">args</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L548"></a><tt class="py-lineno">548</tt> <tt class="py-line"> </tt>
+<a name="XMPPDispatcher.send"></a><div id="XMPPDispatcher.send-def"><a name="L549"></a><tt class="py-lineno">549</tt> <a class="py-toggle" href="#" id="XMPPDispatcher.send-toggle" onclick="return toggle('XMPPDispatcher.send');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.XMPPDispatcher-class.html#send">send</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">now</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="XMPPDispatcher.send-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="XMPPDispatcher.send-expanded"><a name="L550"></a><tt class="py-lineno">550</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L551"></a><tt class="py-lineno">551</tt> <tt class="py-line"><tt class="py-docstring"> Wrap transports send method when plugged into NonBlockingClient. Makes</tt> </tt>
+<a name="L552"></a><tt class="py-lineno">552</tt> <tt class="py-line"><tt class="py-docstring"> sure stanzas get ID and from tag.</tt> </tt>
+<a name="L553"></a><tt class="py-lineno">553</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L554"></a><tt class="py-lineno">554</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">None</tt> </tt>
+<a name="L555"></a><tt class="py-lineno">555</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> <tt class="py-keyword">not</tt> <tt class="py-keyword">in</tt> <tt class="py-op">[</tt><tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">''</tt><tt class="py-op">)</tt><tt class="py-op">,</tt> <tt class="py-name">type</tt><tt class="py-op">(</tt><tt class="py-string">u''</tt><tt class="py-op">)</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L556"></a><tt class="py-lineno">556</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">isinstance</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt id="link-123" class="py-name"><a title="nbxmpp.protocol.Protocol" class="py-name" href="#" onclick="return doclink('link-123', 'Protocol', 'link-10');">Protocol</a></tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L557"></a><tt class="py-lineno">557</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-124" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-124', 'getID', 'link-108');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L558"></a><tt class="py-lineno">558</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">ID</tt> <tt class="py-keyword">is</tt> <tt class="py-name">None</tt><tt class="py-op">:</tt> </tt>
+<a name="L559"></a><tt class="py-lineno">559</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-125" class="py-name" targets="Method nbxmpp.protocol.Protocol.setID()=nbxmpp.protocol.Protocol-class.html#setID"><a title="nbxmpp.protocol.Protocol.setID" class="py-name" href="#" onclick="return doclink('link-125', 'setID', 'link-125');">setID</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-126" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher.getAnID" class="py-name" href="#" onclick="return doclink('link-126', 'getAnID', 'link-35');">getAnID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L560"></a><tt class="py-lineno">560</tt> <tt class="py-line"> <tt class="py-name">ID</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-127" class="py-name"><a title="nbxmpp.protocol.Protocol.getID" class="py-name" href="#" onclick="return doclink('link-127', 'getID', 'link-108');">getID</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L561"></a><tt class="py-lineno">561</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt> <tt class="py-keyword">and</tt> <tt class="py-keyword">not</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-128" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttr()=nbxmpp.simplexml.Node-class.html#getAttr"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-128', 'getAttr', 'link-128');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+<a name="L562"></a><tt class="py-lineno">562</tt> <tt class="py-line"> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-129" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-129', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">_registered_name</tt><tt class="py-op">)</tt> </tt>
+<a name="L563"></a><tt class="py-lineno">563</tt> <tt class="py-line"> </tt>
+<a name="L564"></a><tt class="py-lineno">564</tt> <tt class="py-line"> <tt class="py-comment"># If no ID then it is a whitespace</tt> </tt>
+<a name="L565"></a><tt class="py-lineno">565</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt> <tt class="py-keyword">and</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">enabled</tt> <tt class="py-keyword">and</tt> <tt class="py-name">ID</tt><tt class="py-op">:</tt> </tt>
+<a name="L566"></a><tt class="py-lineno">566</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">.</tt><tt class="py-name">append</tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">)</tt> </tt>
+<a name="L567"></a><tt class="py-lineno">567</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">out_h</tt> <tt class="py-op">+</tt> <tt class="py-number">1</tt> </tt>
+<a name="L568"></a><tt class="py-lineno">568</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">len</tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">uqueue</tt><tt class="py-op">)</tt> <tt class="py-op">&gt;</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt class="py-name">max_queue</tt><tt class="py-op">:</tt> </tt>
+<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">sm</tt><tt class="py-op">.</tt><tt id="link-130" class="py-name" targets="Method nbxmpp.smacks.Smacks.request_ack()=nbxmpp.smacks.Smacks-class.html#request_ack"><a title="nbxmpp.smacks.Smacks.request_ack" class="py-name" href="#" onclick="return doclink('link-130', 'request_ack', 'link-130');">request_ack</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> </tt>
+<a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-131" class="py-name"><a title="nbxmpp.bosh.NonBlockingBOSH.send
nbxmpp.dispatcher_nb.XMPPDispatcher.send
nbxmpp.tls_nb.PyOpenSSLWrapper.send
nbxmpp.tls_nb.SSLWrapper.send
nbxmpp.tls_nb.StdlibSSLWrapper.send
nbxmpp.transports_nb.NonBlockingTCP.send
-nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-155', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">)</tt> </tt>
-<a name="L569"></a><tt class="py-lineno">569</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ID</tt> </tt>
-</div></div><a name="L570"></a><tt class="py-lineno">570</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher"></a><div id="BOSHDispatcher-def"><a name="L571"></a><tt class="py-lineno">571</tt> <tt class="py-line"> </tt>
-<a name="L572"></a><tt class="py-lineno">572</tt> <a class="py-toggle" href="#" id="BOSHDispatcher-toggle" onclick="return toggle('BOSHDispatcher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a><tt class="py-op">(</tt><tt class="py-base-class">XMPPDispatcher</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BOSHDispatcher-expanded"><a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher.PlugIn"></a><div id="BOSHDispatcher.PlugIn-def"><a name="L574"></a><tt class="py-lineno">574</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.PlugIn-toggle" onclick="return toggle('BOSHDispatcher.PlugIn');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn">PlugIn</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">,</tt> <tt class="py-param">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">old_features</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher.PlugIn-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.PlugIn-expanded"><a name="L575"></a><tt class="py-lineno">575</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> <tt class="py-op">=</tt> <tt class="py-name">old_features</tt> </tt>
-<a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt> <tt class="py-op">=</tt> <tt class="py-name">after_SASL</tt> </tt>
-<a name="L577"></a><tt class="py-lineno">577</tt> <tt class="py-line"> <tt id="link-156" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-156', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-157" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
+nbxmpp.transports_nb.NonBlockingTransport.send" class="py-name" href="#" onclick="return doclink('link-131', 'send', 'link-37');">send</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">now</tt><tt class="py-op">)</tt> </tt>
+<a name="L572"></a><tt class="py-lineno">572</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt class="py-name">ID</tt> </tt>
+</div></div><a name="L573"></a><tt class="py-lineno">573</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher"></a><div id="BOSHDispatcher-def"><a name="L574"></a><tt class="py-lineno">574</tt> <tt class="py-line"> </tt>
+<a name="L575"></a><tt class="py-lineno">575</tt> <a class="py-toggle" href="#" id="BOSHDispatcher-toggle" onclick="return toggle('BOSHDispatcher');">-</a><tt class="py-line"><tt class="py-keyword">class</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html">BOSHDispatcher</a><tt class="py-op">(</tt><tt class="py-base-class">XMPPDispatcher</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher-collapsed" style="display:none;" pad="+++" indent="++++"></div><div id="BOSHDispatcher-expanded"><a name="L576"></a><tt class="py-lineno">576</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.PlugIn"></a><div id="BOSHDispatcher.PlugIn-def"><a name="L577"></a><tt class="py-lineno">577</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.PlugIn-toggle" onclick="return toggle('BOSHDispatcher.PlugIn');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#PlugIn">PlugIn</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">owner</tt><tt class="py-op">,</tt> <tt class="py-param">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">False</tt><tt class="py-op">,</tt> <tt class="py-param">old_features</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.PlugIn-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.PlugIn-expanded"><a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> <tt class="py-op">=</tt> <tt class="py-name">old_features</tt> </tt>
+<a name="L579"></a><tt class="py-lineno">579</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt> <tt class="py-op">=</tt> <tt class="py-name">after_SASL</tt> </tt>
+<a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt id="link-132" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-132', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-133" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.PlugIn
nbxmpp.dispatcher_nb.Dispatcher.PlugIn
nbxmpp.plugin.PlugIn
-nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-157', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">owner</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L578"></a><tt class="py-lineno">578</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher.StreamInit"></a><div id="BOSHDispatcher.StreamInit-def"><a name="L579"></a><tt class="py-lineno">579</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamInit-toggle" onclick="return toggle('BOSHDispatcher.StreamInit');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit">StreamInit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher.StreamInit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamInit-expanded"><a name="L580"></a><tt class="py-lineno">580</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"><tt class="py-docstring"> Send an initial stream header</tt> </tt>
-<a name="L582"></a><tt class="py-lineno">582</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-op">=</tt> <tt id="link-158" class="py-name"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-158', 'simplexml', 'link-0');">simplexml</a></tt><tt class="py-op">.</tt><tt id="link-159" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-159', 'NodeBuilder', 'link-60');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.plugin.PlugIn.PlugIn" class="py-name" href="#" onclick="return doclink('link-133', 'PlugIn', 'link-2');">PlugIn</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">owner</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L581"></a><tt class="py-lineno">581</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.StreamInit"></a><div id="BOSHDispatcher.StreamInit-def"><a name="L582"></a><tt class="py-lineno">582</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamInit-toggle" onclick="return toggle('BOSHDispatcher.StreamInit');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamInit">StreamInit</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.StreamInit-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamInit-expanded"><a name="L583"></a><tt class="py-lineno">583</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L584"></a><tt class="py-lineno">584</tt> <tt class="py-line"><tt class="py-docstring"> Send an initial stream header</tt> </tt>
+<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt> <tt class="py-op">=</tt> <tt id="link-134" class="py-name"><a title="nbxmpp.simplexml" class="py-name" href="#" onclick="return doclink('link-134', 'simplexml', 'link-0');">simplexml</a></tt><tt class="py-op">.</tt><tt id="link-135" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder" class="py-name" href="#" onclick="return doclink('link-135', 'NodeBuilder', 'link-60');">NodeBuilder</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-136" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
-nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-160', 'dispatch', 'link-57');">dispatch</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-161" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-136', 'dispatch', 'link-57');">dispatch</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-137" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
-nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-161', 'dispatch', 'link-57');">dispatch</a></tt> </tt>
-<a name="L585"></a><tt class="py-lineno">585</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
-<a name="L586"></a><tt class="py-lineno">586</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.stream_header_received" class="py-name" href="#" onclick="return doclink('link-162', 'stream_header_received', 'link-63');">stream_header_received</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-163" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start" class="py-name" href="#" onclick="return doclink('link-163', '_check_stream_start', 'link-64');">_check_stream_start</a></tt> </tt>
-<a name="L587"></a><tt class="py-lineno">587</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> </tt>
-<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> </tt>
-<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> <tt class="py-op">=</tt> <tt id="link-164" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-164', 'Node', 'link-11');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'stream:stream'</tt><tt class="py-op">)</tt> </tt>
-<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-165" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-165', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt><tt class="py-op">)</tt> </tt>
-<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-166', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'version'</tt><tt class="py-op">,</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">)</tt> </tt>
-<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-167" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-167', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:stream'</tt><tt class="py-op">,</tt> <tt id="link-168" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-168', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
-<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-169" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-169', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt> </tt>
-<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
-<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-170" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-170', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xml:lang'</tt><tt class="py-op">,</tt> </tt>
-<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
-<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> </tt>
-<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
-<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-171" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send_init()=nbxmpp.bosh.NonBlockingBOSH-class.html#send_init"><a title="nbxmpp.bosh.NonBlockingBOSH.send_init" class="py-name" href="#" onclick="return doclink('link-171', 'send_init', 'link-171');">send_init</a></tt><tt class="py-op">(</tt><tt class="py-name">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher.StreamTerminate"></a><div id="BOSHDispatcher.StreamTerminate-def"><a name="L601"></a><tt class="py-lineno">601</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamTerminate-toggle" onclick="return toggle('BOSHDispatcher.StreamTerminate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate">StreamTerminate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher.StreamTerminate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamTerminate-expanded"><a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
-<a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"><tt class="py-docstring"> Send a stream terminator</tt> </tt>
-<a name="L604"></a><tt class="py-lineno">604</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
-<a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt class="py-name">send_terminator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher.ProcessNonBlocking"></a><div id="BOSHDispatcher.ProcessNonBlocking-def"><a name="L607"></a><tt class="py-lineno">607</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.ProcessNonBlocking-toggle" onclick="return toggle('BOSHDispatcher.ProcessNonBlocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher.ProcessNonBlocking-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.ProcessNonBlocking-expanded"><a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt><tt class="py-op">:</tt> </tt>
-<a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> </tt>
-<a name="L610"></a><tt class="py-lineno">610</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-172" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-172', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-173" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-173', 'getAttr', 'link-152');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
-<a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-174" class="py-name" targets="Method nbxmpp.simplexml.Node.delAttr()=nbxmpp.simplexml.Node-class.html#delAttr"><a title="nbxmpp.simplexml.Node.delAttr" class="py-name" href="#" onclick="return doclink('link-174', 'delAttr', 'link-174');">delAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt> </tt>
-<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s&gt;%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-175" class="py-name"><a title="nbxmpp.dispatcher_nb.XML_DECLARATION" class="py-name" href="#" onclick="return doclink('link-175', 'XML_DECLARATION', 'link-18');">XML_DECLARATION</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">fromstream</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
-<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
-<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-176" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-176', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-177" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
-nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-177', 'ProcessNonBlocking', 'link-139');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
-</div><a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> </tt>
-<a name="BOSHDispatcher.dispatch"></a><div id="BOSHDispatcher.dispatch-def"><a name="L616"></a><tt class="py-lineno">616</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.dispatch-toggle" onclick="return toggle('BOSHDispatcher.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">direct</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
-</div><div id="BOSHDispatcher.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.dispatch-expanded"><a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-178" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
-nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-178', 'getName', 'link-112');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-179" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-179', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-180" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-180', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> </tt>
-<a name="L619"></a><tt class="py-lineno">619</tt> <tt class="py-line"> <tt class="py-name">stanza_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-181" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttrs()=nbxmpp.simplexml.Node-class.html#getAttrs"><a title="nbxmpp.simplexml.Node.getAttrs" class="py-name" href="#" onclick="return doclink('link-181', 'getAttrs', 'link-181');">getAttrs</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'authid'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">:</tt> </tt>
-<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> <tt class="py-comment"># should be only in init response</tt> </tt>
-<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-comment"># auth module expects id of stream in document attributes</tt> </tt>
-<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'authid'</tt><tt class="py-op">]</tt> </tt>
-<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-182" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs()=nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs"><a title="nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs" class="py-name" href="#" onclick="return doclink('link-182', 'handle_body_attrs', 'link-182');">handle_body_attrs</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza_attrs</tt><tt class="py-op">)</tt> </tt>
-<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> </tt>
-<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-183" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-183', 'getChildren', 'link-183');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
-<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
-<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
-<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-comment"># if child doesn't have any ns specified, simplexml (or expat)</tt> </tt>
-<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-comment"># thinks it's of parent's (BOSH body) namespace, so we have to</tt> </tt>
-<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-comment"># rewrite it to jabber:client</tt> </tt>
-<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-184" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-184', 'getNamespace', 'link-114');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-185" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-185', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
-<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-186" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-186', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt><tt class="py-op">)</tt> </tt>
-<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt id="link-187" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-187', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-188" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-137', 'dispatch', 'link-57');">dispatch</a></tt> </tt>
+<a name="L588"></a><tt class="py-lineno">588</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_dispatch_depth</tt> <tt class="py-op">=</tt> <tt class="py-number">2</tt> </tt>
+<a name="L589"></a><tt class="py-lineno">589</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt id="link-138" class="py-name"><a title="nbxmpp.simplexml.NodeBuilder.stream_header_received" class="py-name" href="#" onclick="return doclink('link-138', 'stream_header_received', 'link-63');">stream_header_received</a></tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt id="link-139" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher._check_stream_start" class="py-name" href="#" onclick="return doclink('link-139', '_check_stream_start', 'link-64');">_check_stream_start</a></tt> </tt>
+<a name="L590"></a><tt class="py-lineno">590</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">features</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">old_features</tt> </tt>
+<a name="L591"></a><tt class="py-lineno">591</tt> <tt class="py-line"> </tt>
+<a name="L592"></a><tt class="py-lineno">592</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> <tt class="py-op">=</tt> <tt id="link-140" class="py-name"><a title="nbxmpp.simplexml.Node" class="py-name" href="#" onclick="return doclink('link-140', 'Node', 'link-11');">Node</a></tt><tt class="py-op">(</tt><tt class="py-string">'stream:stream'</tt><tt class="py-op">)</tt> </tt>
+<a name="L593"></a><tt class="py-lineno">593</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-141" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-141', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Namespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L594"></a><tt class="py-lineno">594</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-142" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-142', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'version'</tt><tt class="py-op">,</tt> <tt class="py-string">'1.0'</tt><tt class="py-op">)</tt> </tt>
+<a name="L595"></a><tt class="py-lineno">595</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-143" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-143', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xmlns:stream'</tt><tt class="py-op">,</tt> <tt id="link-144" class="py-name"><a title="nbxmpp.protocol.NS_STREAMS" class="py-name" href="#" onclick="return doclink('link-144', 'NS_STREAMS', 'link-4');">NS_STREAMS</a></tt><tt class="py-op">)</tt> </tt>
+<a name="L596"></a><tt class="py-lineno">596</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-145" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-145', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">,</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Server</tt><tt class="py-op">)</tt> </tt>
+<a name="L597"></a><tt class="py-lineno">597</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">:</tt> </tt>
+<a name="L598"></a><tt class="py-lineno">598</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt><tt class="py-op">.</tt><tt id="link-146" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-146', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'xml:lang'</tt><tt class="py-op">,</tt> </tt>
+<a name="L599"></a><tt class="py-lineno">599</tt> <tt class="py-line"> <tt class="py-name">locale</tt><tt class="py-op">.</tt><tt class="py-name">getdefaultlocale</tt><tt class="py-op">(</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">.</tt><tt class="py-name">split</tt><tt class="py-op">(</tt><tt class="py-string">'_'</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-number">0</tt><tt class="py-op">]</tt><tt class="py-op">)</tt> </tt>
+<a name="L600"></a><tt class="py-lineno">600</tt> <tt class="py-line"> </tt>
+<a name="L601"></a><tt class="py-lineno">601</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">True</tt> </tt>
+<a name="L602"></a><tt class="py-lineno">602</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-147" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.send_init()=nbxmpp.bosh.NonBlockingBOSH-class.html#send_init"><a title="nbxmpp.bosh.NonBlockingBOSH.send_init" class="py-name" href="#" onclick="return doclink('link-147', 'send_init', 'link-147');">send_init</a></tt><tt class="py-op">(</tt><tt class="py-name">after_SASL</tt><tt class="py-op">=</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">after_SASL</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L603"></a><tt class="py-lineno">603</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.StreamTerminate"></a><div id="BOSHDispatcher.StreamTerminate-def"><a name="L604"></a><tt class="py-lineno">604</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.StreamTerminate-toggle" onclick="return toggle('BOSHDispatcher.StreamTerminate');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#StreamTerminate">StreamTerminate</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.StreamTerminate-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.StreamTerminate-expanded"><a name="L605"></a><tt class="py-lineno">605</tt> <tt class="py-line"> <tt class="py-docstring">"""</tt> </tt>
+<a name="L606"></a><tt class="py-lineno">606</tt> <tt class="py-line"><tt class="py-docstring"> Send a stream terminator</tt> </tt>
+<a name="L607"></a><tt class="py-lineno">607</tt> <tt class="py-line"><tt class="py-docstring"> """</tt> </tt>
+<a name="L608"></a><tt class="py-lineno">608</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt class="py-name">send_terminator</tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L609"></a><tt class="py-lineno">609</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.ProcessNonBlocking"></a><div id="BOSHDispatcher.ProcessNonBlocking-def"><a name="L610"></a><tt class="py-lineno">610</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.ProcessNonBlocking-toggle" onclick="return toggle('BOSHDispatcher.ProcessNonBlocking');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#ProcessNonBlocking">ProcessNonBlocking</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">data</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.ProcessNonBlocking-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.ProcessNonBlocking-expanded"><a name="L611"></a><tt class="py-lineno">611</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt><tt class="py-op">:</tt> </tt>
+<a name="L612"></a><tt class="py-lineno">612</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt> <tt class="py-op">=</tt> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_metastream</tt> </tt>
+<a name="L613"></a><tt class="py-lineno">613</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-148" class="py-name"><a title="nbxmpp.simplexml.Node.setAttr" class="py-name" href="#" onclick="return doclink('link-148', 'setAttr', 'link-67');">setAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'from'</tt><tt class="py-op">,</tt> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-149" class="py-name"><a title="nbxmpp.simplexml.Node.getAttr" class="py-name" href="#" onclick="return doclink('link-149', 'getAttr', 'link-128');">getAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt><tt class="py-op">)</tt> </tt>
+<a name="L614"></a><tt class="py-lineno">614</tt> <tt class="py-line"> <tt class="py-name">fromstream</tt><tt class="py-op">.</tt><tt id="link-150" class="py-name" targets="Method nbxmpp.simplexml.Node.delAttr()=nbxmpp.simplexml.Node-class.html#delAttr"><a title="nbxmpp.simplexml.Node.delAttr" class="py-name" href="#" onclick="return doclink('link-150', 'delAttr', 'link-150');">delAttr</a></tt><tt class="py-op">(</tt><tt class="py-string">'to'</tt><tt class="py-op">)</tt> </tt>
+<a name="L615"></a><tt class="py-lineno">615</tt> <tt class="py-line"> <tt class="py-name">data</tt> <tt class="py-op">=</tt> <tt class="py-string">'%s%s&gt;%s'</tt> <tt class="py-op">%</tt> <tt class="py-op">(</tt><tt id="link-151" class="py-name"><a title="nbxmpp.dispatcher_nb.XML_DECLARATION" class="py-name" href="#" onclick="return doclink('link-151', 'XML_DECLARATION', 'link-18');">XML_DECLARATION</a></tt><tt class="py-op">,</tt> <tt class="py-name">str</tt><tt class="py-op">(</tt><tt class="py-name">fromstream</tt><tt class="py-op">)</tt><tt class="py-op">[</tt><tt class="py-op">:</tt><tt class="py-op">-</tt><tt class="py-number">2</tt><tt class="py-op">]</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+<a name="L616"></a><tt class="py-lineno">616</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">restart</tt> <tt class="py-op">=</tt> <tt class="py-name">False</tt> </tt>
+<a name="L617"></a><tt class="py-lineno">617</tt> <tt class="py-line"> <tt class="py-keyword">return</tt> <tt id="link-152" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-152', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-153" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.ProcessNonBlocking
+nbxmpp.dispatcher_nb.XMPPDispatcher.ProcessNonBlocking" class="py-name" href="#" onclick="return doclink('link-153', 'ProcessNonBlocking', 'link-115');">ProcessNonBlocking</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">data</tt><tt class="py-op">)</tt> </tt>
+</div><a name="L618"></a><tt class="py-lineno">618</tt> <tt class="py-line"> </tt>
+<a name="BOSHDispatcher.dispatch"></a><div id="BOSHDispatcher.dispatch-def"><a name="L619"></a><tt class="py-lineno">619</tt> <a class="py-toggle" href="#" id="BOSHDispatcher.dispatch-toggle" onclick="return toggle('BOSHDispatcher.dispatch');">-</a><tt class="py-line"> <tt class="py-keyword">def</tt> <a class="py-def-name" href="nbxmpp.dispatcher_nb.BOSHDispatcher-class.html#dispatch">dispatch</a><tt class="py-op">(</tt><tt class="py-param">self</tt><tt class="py-op">,</tt> <tt class="py-param">stanza</tt><tt class="py-op">,</tt> <tt class="py-param">session</tt><tt class="py-op">=</tt><tt class="py-name">None</tt><tt class="py-op">,</tt> <tt class="py-param">direct</tt><tt class="py-op">=</tt><tt class="py-number">0</tt><tt class="py-op">)</tt><tt class="py-op">:</tt> </tt>
+</div><div id="BOSHDispatcher.dispatch-collapsed" style="display:none;" pad="+++" indent="++++++++"></div><div id="BOSHDispatcher.dispatch-expanded"><a name="L620"></a><tt class="py-lineno">620</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-154" class="py-name"><a title="nbxmpp.roster_nb.NonBlockingRoster.getName
+nbxmpp.simplexml.Node.getName" class="py-name" href="#" onclick="return doclink('link-154', 'getName', 'link-99');">getName</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt class="py-string">'body'</tt> <tt class="py-keyword">and</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-155" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-155', 'getNamespace', 'link-101');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-156" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-156', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L621"></a><tt class="py-lineno">621</tt> <tt class="py-line"> </tt>
+<a name="L622"></a><tt class="py-lineno">622</tt> <tt class="py-line"> <tt class="py-name">stanza_attrs</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-157" class="py-name" targets="Method nbxmpp.simplexml.Node.getAttrs()=nbxmpp.simplexml.Node-class.html#getAttrs"><a title="nbxmpp.simplexml.Node.getAttrs" class="py-name" href="#" onclick="return doclink('link-157', 'getAttrs', 'link-157');">getAttrs</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L623"></a><tt class="py-lineno">623</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-string">'authid'</tt> <tt class="py-keyword">in</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">:</tt> </tt>
+<a name="L624"></a><tt class="py-lineno">624</tt> <tt class="py-line"> <tt class="py-comment"># should be only in init response</tt> </tt>
+<a name="L625"></a><tt class="py-lineno">625</tt> <tt class="py-line"> <tt class="py-comment"># auth module expects id of stream in document attributes</tt> </tt>
+<a name="L626"></a><tt class="py-lineno">626</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">Stream</tt><tt class="py-op">.</tt><tt class="py-name">_document_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'id'</tt><tt class="py-op">]</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza_attrs</tt><tt class="py-op">[</tt><tt class="py-string">'authid'</tt><tt class="py-op">]</tt> </tt>
+<a name="L627"></a><tt class="py-lineno">627</tt> <tt class="py-line"> <tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">Connection</tt><tt class="py-op">.</tt><tt id="link-158" class="py-name" targets="Method nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs()=nbxmpp.bosh.NonBlockingBOSH-class.html#handle_body_attrs"><a title="nbxmpp.bosh.NonBlockingBOSH.handle_body_attrs" class="py-name" href="#" onclick="return doclink('link-158', 'handle_body_attrs', 'link-158');">handle_body_attrs</a></tt><tt class="py-op">(</tt><tt class="py-name">stanza_attrs</tt><tt class="py-op">)</tt> </tt>
+<a name="L628"></a><tt class="py-lineno">628</tt> <tt class="py-line"> </tt>
+<a name="L629"></a><tt class="py-lineno">629</tt> <tt class="py-line"> <tt class="py-name">children</tt> <tt class="py-op">=</tt> <tt class="py-name">stanza</tt><tt class="py-op">.</tt><tt id="link-159" class="py-name" targets="Method nbxmpp.simplexml.Node.getChildren()=nbxmpp.simplexml.Node-class.html#getChildren"><a title="nbxmpp.simplexml.Node.getChildren" class="py-name" href="#" onclick="return doclink('link-159', 'getChildren', 'link-159');">getChildren</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> </tt>
+<a name="L630"></a><tt class="py-lineno">630</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L631"></a><tt class="py-lineno">631</tt> <tt class="py-line"> <tt class="py-keyword">for</tt> <tt class="py-name">child</tt> <tt class="py-keyword">in</tt> <tt class="py-name">children</tt><tt class="py-op">:</tt> </tt>
+<a name="L632"></a><tt class="py-lineno">632</tt> <tt class="py-line"> <tt class="py-comment"># if child doesn't have any ns specified, simplexml (or expat)</tt> </tt>
+<a name="L633"></a><tt class="py-lineno">633</tt> <tt class="py-line"> <tt class="py-comment"># thinks it's of parent's (BOSH body) namespace, so we have to</tt> </tt>
+<a name="L634"></a><tt class="py-lineno">634</tt> <tt class="py-line"> <tt class="py-comment"># rewrite it to jabber:client</tt> </tt>
+<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">if</tt> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-160" class="py-name"><a title="nbxmpp.simplexml.Node.getNamespace" class="py-name" href="#" onclick="return doclink('link-160', 'getNamespace', 'link-101');">getNamespace</a></tt><tt class="py-op">(</tt><tt class="py-op">)</tt> <tt class="py-op">==</tt> <tt id="link-161" class="py-name"><a title="nbxmpp.protocol.NS_HTTP_BIND" class="py-name" href="#" onclick="return doclink('link-161', 'NS_HTTP_BIND', 'link-6');">NS_HTTP_BIND</a></tt><tt class="py-op">:</tt> </tt>
+<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt class="py-name">child</tt><tt class="py-op">.</tt><tt id="link-162" class="py-name"><a title="nbxmpp.simplexml.Node.setNamespace" class="py-name" href="#" onclick="return doclink('link-162', 'setNamespace', 'link-66');">setNamespace</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">.</tt><tt class="py-name">_owner</tt><tt class="py-op">.</tt><tt class="py-name">defaultNamespace</tt><tt class="py-op">)</tt> </tt>
+<a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> <tt id="link-163" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-163', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-164" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
-nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-188', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
-<a name="L635"></a><tt class="py-lineno">635</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
-<a name="L636"></a><tt class="py-lineno">636</tt> <tt class="py-line"> <tt id="link-189" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-189', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-190" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-164', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">child</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
+<a name="L638"></a><tt class="py-lineno">638</tt> <tt class="py-line"> <tt class="py-keyword">else</tt><tt class="py-op">:</tt> </tt>
+<a name="L639"></a><tt class="py-lineno">639</tt> <tt class="py-line"> <tt id="link-165" class="py-name"><a title="nbxmpp.dispatcher_nb.XMPPDispatcher" class="py-name" href="#" onclick="return doclink('link-165', 'XMPPDispatcher', 'link-19');">XMPPDispatcher</a></tt><tt class="py-op">.</tt><tt id="link-166" class="py-name"><a title="nbxmpp.dispatcher_nb.BOSHDispatcher.dispatch
nbxmpp.dispatcher_nb.XMPPDispatcher.dispatch
-nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-190', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
-</div></div><a name="L637"></a><tt class="py-lineno">637</tt> <tt class="py-line"> </tt><script type="text/javascript">
+nbxmpp.simplexml.NodeBuilder.dispatch" class="py-name" href="#" onclick="return doclink('link-166', 'dispatch', 'link-57');">dispatch</a></tt><tt class="py-op">(</tt><tt class="py-name">self</tt><tt class="py-op">,</tt> <tt class="py-name">stanza</tt><tt class="py-op">,</tt> <tt class="py-name">session</tt><tt class="py-op">,</tt> <tt class="py-name">direct</tt><tt class="py-op">)</tt> </tt>
+</div></div><a name="L640"></a><tt class="py-lineno">640</tt> <tt class="py-line"> </tt><script type="text/javascript">
<!--
expandto(location.href);
// -->
@@ -1041,7 +1017,7 @@ expandto(location.href);
<table border="0" cellpadding="0" cellspacing="0" width="100%%">
<tr>
<td align="left" class="footer">
- Generated by Epydoc 3.0.1 on Tue May 8 11:18:08 2012
+ Generated by Epydoc 3.0.1 on Fri Jul 26 11:25:16 2013
</td>
<td align="right" class="footer">
<a target="mainFrame" href="http://epydoc.sourceforge.net"