From e241d4e3c74a7414a01c0a4f8bfd2f80a3853545 Mon Sep 17 00:00:00 2001
From: Emmanuel Gil Peyrot <linkmauve@linkmauve.fr>
Date: Sat, 27 Oct 2018 23:21:27 +0200
Subject: =?UTF-8?q?XEP-0030:=20Don=E2=80=99t=20call=20the=20timeout=5Fcall?=
 =?UTF-8?q?back=20on=20each=20domain=20which=20doesn=E2=80=99t=20reply=20t?=
 =?UTF-8?q?o=20disco#info.?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit

---
 slixmpp/plugins/xep_0030/disco.py       | 10 +++++-----
 slixmpp/plugins/xep_0363/http_upload.py | 11 +++++------
 2 files changed, 10 insertions(+), 11 deletions(-)

diff --git a/slixmpp/plugins/xep_0030/disco.py b/slixmpp/plugins/xep_0030/disco.py
index 460a9134..59b1e0cc 100644
--- a/slixmpp/plugins/xep_0030/disco.py
+++ b/slixmpp/plugins/xep_0030/disco.py
@@ -299,18 +299,18 @@ class XEP_0030(BasePlugin):
         return self.api['has_identity'](jid, node, ifrom, data)
 
     async def get_info_from_domain(self, domain=None, timeout=None,
-                                   cached=True, callback=None, **kwargs):
+                                   cached=True, callback=None):
         if domain is None:
             domain = self.xmpp.boundjid.domain
 
         if not cached or domain not in self.domain_infos:
             infos = [self.get_info(
-                domain, timeout=timeout, **kwargs)]
+                domain, timeout=timeout)]
             iq_items = await self.get_items(
-                domain, timeout=timeout, **kwargs)
+                domain, timeout=timeout)
             items = iq_items['disco_items']['items']
             infos += [
-                self.get_info(item[0], timeout=timeout, **kwargs)
+                self.get_info(item[0], timeout=timeout)
                 for item in items]
             info_futures, _ = await asyncio.wait(
                 infos,
@@ -319,7 +319,7 @@ class XEP_0030(BasePlugin):
             )
 
             self.domain_infos[domain] = [
-                future.result() for future in info_futures]
+                future.result() for future in info_futures if not future.exception()]
 
         results = self.domain_infos[domain]
 
diff --git a/slixmpp/plugins/xep_0363/http_upload.py b/slixmpp/plugins/xep_0363/http_upload.py
index 77ccfc01..2228ca8b 100644
--- a/slixmpp/plugins/xep_0363/http_upload.py
+++ b/slixmpp/plugins/xep_0363/http_upload.py
@@ -67,10 +67,9 @@ class XEP_0363(BasePlugin):
     def _handle_request(self, iq):
         self.xmpp.event('http_upload_request', iq)
 
-    async def find_upload_service(self, domain=None, timeout=None, timeout_callback=None):
+    async def find_upload_service(self, domain=None, timeout=None):
         results = await self.xmpp['xep_0030'].get_info_from_domain(
-            domain=domain,
-            timeout=timeout, timeout_callback=timeout_callback)
+            domain=domain, timeout=timeout)
 
         candidates = []
         for info in results:
@@ -101,8 +100,7 @@ class XEP_0363(BasePlugin):
         ''' Helper function which does all of the uploading process. '''
         if self.upload_service is None:
             info_iq = await self.find_upload_service(
-                domain=domain,
-                timeout=timeout, timeout_callback=timeout_callback)
+                domain=domain, timeout=timeout)
             if info_iq is None:
                 raise UploadServiceNotFound()
             self.upload_service = info_iq['from']
@@ -133,7 +131,8 @@ class XEP_0363(BasePlugin):
 
         basename = os.path.basename(filename)
         slot_iq = await self.request_slot(self.upload_service, basename, size,
-                                               content_type, ifrom, timeout)
+                                          content_type, ifrom, timeout,
+                                          timeout_callback=timeout_callback)
         slot = slot_iq['http_upload_slot']
 
         headers = {
-- 
cgit v1.2.3