51 self.writelines(str.split('\n')) |
51 self.writelines(str.split('\n')) |
52 def writelines(self, seq): |
52 def writelines(self, seq): |
53 for msg in seq: |
53 for msg in seq: |
54 self.handler.log_error("HG error: %s", msg) |
54 self.handler.log_error("HG error: %s", msg) |
55 |
55 |
56 class _httprequesthandler(BaseHTTPServer.BaseHTTPRequestHandler): |
56 class _httprequesthandler(httpservermod.basehttprequesthandler): |
57 |
57 |
58 url_scheme = 'http' |
58 url_scheme = 'http' |
59 |
59 |
60 @staticmethod |
60 @staticmethod |
61 def preparehttpserver(httpserver, ui): |
61 def preparehttpserver(httpserver, ui): |
62 """Prepare .socket of new HTTPServer instance""" |
62 """Prepare .socket of new HTTPServer instance""" |
63 pass |
63 pass |
64 |
64 |
65 def __init__(self, *args, **kargs): |
65 def __init__(self, *args, **kargs): |
66 self.protocol_version = 'HTTP/1.1' |
66 self.protocol_version = 'HTTP/1.1' |
67 BaseHTTPServer.BaseHTTPRequestHandler.__init__(self, *args, **kargs) |
67 httpservermod.basehttprequesthandler.__init__(self, *args, **kargs) |
68 |
68 |
69 def _log_any(self, fp, format, *args): |
69 def _log_any(self, fp, format, *args): |
70 fp.write("%s - - [%s] %s\n" % (self.client_address[0], |
70 fp.write("%s - - [%s] %s\n" % (self.client_address[0], |
71 self.log_date_time_string(), |
71 self.log_date_time_string(), |
72 format % args)) |
72 format % args)) |
261 def openlog(opt, default): |
261 def openlog(opt, default): |
262 if opt and opt != '-': |
262 if opt and opt != '-': |
263 return open(opt, 'a') |
263 return open(opt, 'a') |
264 return default |
264 return default |
265 |
265 |
266 class MercurialHTTPServer(object, _mixin, BaseHTTPServer.HTTPServer): |
266 class MercurialHTTPServer(object, _mixin, httpservermod.httpserver): |
267 |
267 |
268 # SO_REUSEADDR has broken semantics on windows |
268 # SO_REUSEADDR has broken semantics on windows |
269 if os.name == 'nt': |
269 if os.name == 'nt': |
270 allow_reuse_address = 0 |
270 allow_reuse_address = 0 |
271 |
271 |
272 def __init__(self, ui, app, addr, handler, **kwargs): |
272 def __init__(self, ui, app, addr, handler, **kwargs): |
273 BaseHTTPServer.HTTPServer.__init__(self, addr, handler, **kwargs) |
273 httpservermod.httpserver.__init__(self, addr, handler, **kwargs) |
274 self.daemon_threads = True |
274 self.daemon_threads = True |
275 self.application = app |
275 self.application = app |
276 |
276 |
277 handler.preparehttpserver(self, ui) |
277 handler.preparehttpserver(self, ui) |
278 |
278 |