25 ''' |
25 ''' |
26 |
26 |
27 import socket, time, os |
27 import socket, time, os |
28 |
28 |
29 import Zeroconf |
29 import Zeroconf |
30 from mercurial import ui, hg, encoding, util |
30 from mercurial import ui, hg, encoding, util, dispatch |
31 from mercurial import extensions |
31 from mercurial import extensions |
32 from mercurial.hgweb import hgweb_mod |
32 from mercurial.hgweb import hgweb_mod |
33 from mercurial.hgweb import hgwebdir_mod |
33 from mercurial.hgweb import hgwebdir_mod |
34 |
34 |
35 # publish |
35 # publish |
164 for name, path in getzcpaths(): |
164 for name, path in getzcpaths(): |
165 if path == source: |
165 if path == source: |
166 return name.encode(encoding.encoding) |
166 return name.encode(encoding.encoding) |
167 return orig(source) |
167 return orig(source) |
168 |
168 |
|
169 def cleanupafterdispatch(orig, ui, options, cmd, cmdfunc): |
|
170 try: |
|
171 return orig(ui, options, cmd, cmdfunc) |
|
172 finally: |
|
173 # we need to call close() on the server to notify() the various |
|
174 # threading Conditions and allow the background threads to exit |
|
175 global server |
|
176 if server: |
|
177 server.close() |
|
178 |
|
179 extensions.wrapfunction(dispatch, '_runcommand', cleanupafterdispatch) |
|
180 |
169 extensions.wrapfunction(ui.ui, 'config', config) |
181 extensions.wrapfunction(ui.ui, 'config', config) |
170 extensions.wrapfunction(ui.ui, 'configitems', configitems) |
182 extensions.wrapfunction(ui.ui, 'configitems', configitems) |
171 extensions.wrapfunction(hg, 'defaultdest', defaultdest) |
183 extensions.wrapfunction(hg, 'defaultdest', defaultdest) |
172 hgweb_mod.hgweb = hgwebzc |
184 hgweb_mod.hgweb = hgwebzc |
173 hgwebdir_mod.hgwebdir = hgwebdirzc |
185 hgwebdir_mod.hgwebdir = hgwebdirzc |