G'day everybody,

While implementing Entity Capabilities (XEP-0115) on my client, I faced 2 issues with Wokkel: - if we have a disco info request with no "to" or "from" attribute (seen with Prosody), a KeyError exception is raised. The attached patch fix it. - I generate the hash with the result of disco.DiscoHandler.info with no node, and that include everything like VersionHandler's "jabber:iq:version" feature. That was working great with Prosody and Openfire, but not with Ejabberd (the notification for PEP was not included). After some investigations, I realised that jabber:iq:version feature is not added when there is a node in disco info request, and that's the case with XEP-0115, so the features list was different to the one used to generate the hash, and ejabberd was (silently :( ) rejecting it; resulting in no notification for Personal Eventing Protocol. I temporarily fixed the issue by overriding generic.VersionHandler.getDiscoInfo and forcing the node parameter to None, but this case should be managed in Wokkel.

I have (partially) implemented XEP-0115 in my XMPP client (Salut à Toi: http://wiki.goffi.org/wiki/Salut_%C3%A0_Toi ), but it would be nice to add it to Wokkel.

Last but not least, I have said a few months ago that I'd like to improve MUC branch for mainstream inclusion, I'm still interested in that, as my client is based on Twisted/Wokkel and I need MUC (I was just too busy so far to contribute on it :) ), but I need the help of Ralph Meijer or at least a Twisted guru if he is too busy to know exactly how and what. For the moment I need to make a dirty hack in my setup.py to use the MUC branch in my project...

Cheers
Goffi
diff -r ce13b7c6659c wokkel/disco.py
--- a/wokkel/disco.py	Sun Dec 26 23:15:41 2010 +0100
+++ b/wokkel/disco.py	Tue Feb 08 01:16:34 2011 +0100
@@ -445,8 +445,14 @@
         @param iq: The request iq element.
         @type iq: L{Element<twisted.words.xish.domish.Element>}
         """
-        requestor = jid.internJID(iq["from"])
-        target = jid.internJID(iq["to"])
+        try:
+            requestor = jid.internJID(iq["from"])
+        except KeyError:
+            requestor = None
+        try:
+            target = jid.internJID(iq["to"])
+        except KeyError:
+            target = None
         nodeIdentifier = iq.query.getAttribute("node", '')
 
         def toResponse(info):
_______________________________________________
Twisted-web mailing list
[email protected]
http://twistedmatrix.com/cgi-bin/mailman/listinfo/twisted-web

Reply via email to