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):