]> code.delx.au - pymsnt/blobdiff - src/disco.py
Improved reactor autodetection.
[pymsnt] / src / disco.py
index 5fb0746c41abbc50e053cd285febddee49a8195a..3fb2fc90d4d4efe7a45933c0f3625e4fc5ff74d6 100644 (file)
@@ -2,7 +2,7 @@
 # Licensed for distribution under the GPL version 2, check COPYING for details
 
 import utils
-from tlib.xmlw import Element
+from tlib.xmlw import Element, jid
 from twisted.internet.defer import Deferred
 from twisted.internet import reactor
 from debug import LogEvent, INFO, WARN, ERROR
@@ -17,9 +17,10 @@ DISCO_ITEMS   = DISCO + "#items"
 DISCO_INFO    = DISCO + "#info"
 COMMANDS      = "http://jabber.org/protocol/commands"
 CAPS          = "http://jabber.org/protocol/caps"
-SUBSYNC       = "http://jabber.org/protocol/roster-subsync"
+SUBSYNC       = "http://delx.cjb.net/protocol/roster-subsync"
 MUC           = "http://jabber.org/protocol/muc"
 MUC_USER      = MUC + "#user"
+FEATURE_NEG   = "http://jabber.org/protocol/feature-neg"
 SI            = "http://jabber.org/protocol/si"
 FT            = "http://jabber.org/protocol/si/profile/file-transfer"
 S5B           = "http://jabber.org/protocol/bytestreams"
@@ -35,6 +36,7 @@ XCONFERENCE   = "jabber:x:conference"
 XEVENT        = "jabber:x:event"
 XDELAY        = "jabber:x:delay"
 XAVATAR       = "jabber:x:avatar"
+XDATA         = "jabber:x:data"
 STORAGEAVATAR = "storage:client:avatar"
 XVCARDUPDATE  = "vcard-temp:x:update"
 VCARDTEMP     = "vcard-temp"
@@ -109,8 +111,8 @@ class ServerDiscovery:
                iqType = el.getAttribute("type")
                ulang = utils.getLang(el)
                try: # Stringprep
-                       froj = utils.jid(fro)
-                       to = utils.jid(to).full()
+                       froj = jid.intern(fro)
+                       to = jid.intern(to).full()
                except Exception, e:
                        LogEvent(WARN, "", "Dropping IQ because of stringprep error")
 
@@ -259,8 +261,11 @@ class DiscoRequest:
 
                features = []
 
-               query = el.getElement("query")
-               if not query:
+               for child in el.elements():
+                       if child.name == "query":
+                               query = child
+                               break
+               else:
                        return []
 
                for child in query.elements():