From 8d8db5800332dcb1368edac08078ff1764751bb6 Mon Sep 17 00:00:00 2001
From: Yann Leboulanger <asterix@lagaule.org>
Date: Fri, 18 Dec 2009 17:27:09 +0100
Subject: [PATCH] ignore invalid SRV reply from libasyncns. Fixes #5507

---
 src/common/resolver.py | 27 ++++++++++++++++++++-------
 1 file changed, 20 insertions(+), 7 deletions(-)

diff --git a/src/common/resolver.py b/src/common/resolver.py
index 3ffd5430db..c675f22e49 100644
--- a/src/common/resolver.py
+++ b/src/common/resolver.py
@@ -23,8 +23,14 @@ import re
 import logging
 log = logging.getLogger('gajim.c.resolver')
 
+if __name__ == '__main__':
+	sys.path.append('..')
+	from common import i18n
+	import common.configpaths
+	common.configpaths.gajimpaths.init(None)
+
 from common import helpers
-from xmpp.idlequeue import IdleCommand
+from common.xmpp.idlequeue import IdleCommand
 
 # it is good to check validity of arguments, when calling system commands
 ns_type_pattern = re.compile('^[a-z]+$')
@@ -126,18 +132,23 @@ class LibAsyncNSResolver(CommonResolver):
 			while resq is not None:
 				try:
 					rl = resq.get_done()
-				except:
+				except Exception:
 					rl = []
+				hosts = []
+				requested_type = resq.userdata['type']
+				requested_host = resq.userdata['host']
 				if rl:
 					for r in rl:
+						if r['type'] != requested_type:
+							# Answer doesn't contain valid SRV data
+							continue
 						r['prio'] = r['pref']
-				self._on_ready(
-					host = resq.userdata['host'],
-					type = resq.userdata['type'],
-					result_list = rl)
+						hosts.append(r)
+				self._on_ready(host=requested_host, type=requested_type,
+					result_list=hosts)
 				try:
 					resq = self.asyncns.get_next()
-				except:
+				except Exception:
 					resq = None
 		elif type(resq) == libasyncns.AddrInfoQuery:
 			# getaddrinfo result (A or AAAA)
@@ -324,6 +335,8 @@ if __name__ == '__main__':
 	win.add(hbox)
 	win.show_all()
 	gobject.timeout_add(200, idlequeue.process)
+	if USE_LIBASYNCNS:
+		gobject.timeout_add(200, resolver.process)
 	gtk.main()
 
 # vim: se ts=3:
-- 
GitLab