diff --git a/hgext/zeroconf/__init__.py b/hgext/zeroconf/__init__.py index 2b1226693c7060115256f45a8ead82ce7f24b5a8_aGdleHQvemVyb2NvbmYvX19pbml0X18ucHk=..23fc62e0a96000ef8eee951773d3a1170886de99_aGdleHQvemVyb2NvbmYvX19pbml0X18ucHk= 100644 --- a/hgext/zeroconf/__init__.py +++ b/hgext/zeroconf/__init__.py @@ -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)