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