--- /dev/null
+diff -ur gajim-0.7-old/src/common/connection.py gajim-0.7/src/common/connection.py
+--- gajim-0.7-old/src/common/connection.py 2005-05-23 20:22:06.000000000 +0200
++++ gajim-0.7/src/common/connection.py 2005-06-03 22:29:02.033694568 +0200
+@@ -157,7 +157,10 @@
+ def _vCardCB(self, con, vc):
+ """Called when we recieve a vCard
+ Parse the vCard and send it to plugins"""
+- vcard = {'jid': vc.getFrom().getStripped()}
++ try:
++ vcard = {'jid': vc.getFrom().getStripped()}
++ except:
++ vcard = {}
+ if vc.getTag('vCard').getNamespace() == common.xmpp.NS_VCARD:
+ card = vc.getChildren()[0]
+ for info in card.getChildren():
+diff -ur gajim-0.7-old/src/common/xmpp/auth.py gajim-0.7/src/common/xmpp/auth.py
+--- gajim-0.7-old/src/common/xmpp/auth.py 2005-05-23 20:22:05.000000000 +0200
++++ gajim-0.7/src/common/xmpp/auth.py 2005-06-03 22:29:02.037693960 +0200
+@@ -109,7 +109,8 @@
+ two Dispatcher.Process() calls. """
+ self.username=username
+ self.password=password
+- if self._owner.Dispatcher.Stream.features:
++ if self.startsasl: pass
++ elif self._owner.Dispatcher.Stream.features:
+ try: self.FeaturesHandler(self._owner.Dispatcher,self._owner.Dispatcher.Stream.features)
+ except NodeProcessed: pass
+ else: self._owner.RegisterHandler('features',self.FeaturesHandler,xmlns=NS_STREAMS)
+diff -ur gajim-0.7-old/src/common/xmpp/transports.py gajim-0.7/src/common/xmpp/transports.py
+--- gajim-0.7-old/src/common/xmpp/transports.py 2005-05-23 20:22:05.000000000 +0200
++++ gajim-0.7/src/common/xmpp/transports.py 2005-06-03 22:29:02.045692744 +0200
+@@ -31,6 +31,7 @@
+ from simplexml import ustr
+ from client import PlugIn
+ from protocol import *
++import dns.resolver
+
+ class error:
+ """An exception to be raised in case of low-level errors in methods of 'transports' module."""
+@@ -50,6 +51,29 @@
+ PlugIn.__init__(self)
+ self.DBG_LINE='socket'
+ self._exported_methods=[self.send,self.disconnect]
++
++ # SRV resolver hacks
++ host, port = server
++ possible_queries = [
++ "_xmpp-client._tcp." + host,
++ "_jabber._tcp." + host,
++ ]
++ for query in possible_queries:
++ try:
++ answers = [x for x in dns.resolver.query (query, "SRV")]
++ if answers:
++ host = str (answers[0].target)
++ port = int (answers[0].port)
++ if port == 5223 and query[:5] == "_xmpp":
++ # temporary hack
++ port = 5222
++ break
++ except:
++ pass
++
++ server = (host, port)
++ # end of SRV resolver hacks
++
+ self._server = server
+
+ def plugin(self, owner):