From b7a66295f6ea77041cfaff79aff70ee6a6f870d6 Mon Sep 17 00:00:00 2001
From: shortcutme <tamas@zeronet.io>
Date: Sun, 26 Aug 2018 02:46:12 +0200
Subject: [PATCH] Start local peer discovery async to avoid double announce

---
 plugins/AnnounceLocal/AnnounceLocalPlugin.py | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/plugins/AnnounceLocal/AnnounceLocalPlugin.py b/plugins/AnnounceLocal/AnnounceLocalPlugin.py
index de98e6ea..27b4d38a 100644
--- a/plugins/AnnounceLocal/AnnounceLocalPlugin.py
+++ b/plugins/AnnounceLocal/AnnounceLocalPlugin.py
@@ -12,10 +12,15 @@ class SiteAnnouncerPlugin(object):
     def announce(self, force=False, *args, **kwargs):
         local_announcer = self.site.connection_server.local_announcer
 
+        thread = None
         if local_announcer and (force or time.time() - local_announcer.last_discover > 5 * 60):
-            local_announcer.discover(force=force)
+            thread = gevent.spawn(local_announcer.discover, force=force)
+        back = super(SiteAnnouncerPlugin, self).announce(force=force, *args, **kwargs)
 
-        return super(SiteAnnouncerPlugin, self).announce(force=force, *args, **kwargs)
+        if thread:
+            thread.join()
+
+        return back
 
 
 class LocalAnnouncer(BroadcastServer.BroadcastServer):