hgext/zeroconf/__init__.py
branchstable
changeset 14104 23fc62e0a960
parent 12076 49463314c24f
child 16683 525fdb738975
--- a/hgext/zeroconf/__init__.py	Fri Apr 29 22:21:13 2011 +0300
+++ b/hgext/zeroconf/__init__.py	Sat Apr 30 19:36:59 2011 +0200
@@ -27,7 +27,7 @@
 import socket, time, os
 
 import Zeroconf
-from mercurial import ui, hg, encoding, util
+from mercurial import ui, hg, encoding, util, dispatch
 from mercurial import extensions
 from mercurial.hgweb import hgweb_mod
 from mercurial.hgweb import hgwebdir_mod
@@ -166,6 +166,18 @@
             return name.encode(encoding.encoding)
     return orig(source)
 
+def cleanupafterdispatch(orig, ui, options, cmd, cmdfunc):
+    try:
+        return orig(ui, options, cmd, cmdfunc)
+    finally:
+        # we need to call close() on the server to notify() the various
+        # threading Conditions and allow the background threads to exit
+        global server
+        if server:
+            server.close()
+
+extensions.wrapfunction(dispatch, '_runcommand', cleanupafterdispatch)
+
 extensions.wrapfunction(ui.ui, 'config', config)
 extensions.wrapfunction(ui.ui, 'configitems', configitems)
 extensions.wrapfunction(hg, 'defaultdest', defaultdest)