Ticket #8020: t8020-http11-r7956.2.diff
| File t8020-http11-r7956.2.diff, 2.5 KB (added by cboos, 3 years ago) |
|---|
-
trac/web/standalone.py
102 102 103 103 class TracHTTPServer(ThreadingMixIn, WSGIServer): 104 104 105 def __init__(self, server_address, application, env_parent_dir, env_paths): 105 def __init__(self, server_address, application, env_parent_dir, env_paths, 106 use_http_11=False): 107 request_handlers = (TracHTTPRequestHandler, TracHTTP11RequestHandler) 106 108 WSGIServer.__init__(self, server_address, application, 107 request_handler= TracHTTPRequestHandler)109 request_handler=request_handlers[bool(use_http_11)]) 108 110 109 111 110 112 class TracHTTPRequestHandler(WSGIRequestHandler): … … 115 117 # Disable reverse name lookups 116 118 return self.client_address[:2][0] 117 119 120 class TracHTTP11RequestHandler(TracHTTPRequestHandler): 121 protocol_version = 'HTTP/1.1' 118 122 123 119 124 def main(): 120 125 from optparse import OptionParser, OptionValueError 121 126 parser = OptionParser(usage='usage: %prog [options] [projenv] ...', … … 161 166 parser.add_option('-q', '--unquote', action='store_true', 162 167 dest='unquote', 163 168 help='unquote PATH_INFO (may be needed when using ajp') 169 parser.add_option('--http11', action='store_true', dest='http11', 170 help='use HTTP/1.1 protocol version instead of HTTP/1.0') 164 171 parser.add_option('-e', '--env-parent-dir', action='store', 165 172 dest='env_parent_dir', metavar='PARENTDIR', 166 173 help='parent directory of the project environments') … … 237 244 if options.protocol == 'http': 238 245 def serve(): 239 246 httpd = TracHTTPServer(server_address, wsgi_app, 240 options.env_parent_dir, args) 247 options.env_parent_dir, args, 248 use_http_11=options.http11) 249 241 250 print 'Server starting in PID %i.' % os.getpid() 242 251 addr, port = server_address 243 252 if not addr or addr == '0.0.0.0': … … 245 254 % (port, port, base_path) 246 255 else: 247 256 print 'Serving on http://%s:%s/%s' % (addr, port, base_path) 257 if options.http11: 258 print 'Using HTTP/1.1 protocol version' 248 259 httpd.serve_forever() 249 260 elif options.protocol in ('scgi', 'ajp'): 250 261 def serve():
