Ticket #8020: tracd-http11-r8080.diff
| File tracd-http11-r8080.diff, 5.0 KB (added by cboos, 3 years ago) |
|---|
-
trac/mimeview/api.py
914 914 content, selector) 915 915 req.send_response(200) 916 916 req.send_header('Content-Type', output_type) 917 req.send_header('Content-Length', len(content)) 917 918 if filename: 918 919 req.send_header('Content-Disposition', 'filename=%s.%s' % 919 920 (filename, ext)) -
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(): -
trac/web/auth.py
295 295 return user 296 296 297 297 start_response('401 Unauthorized', 298 [('WWW-Authenticate', 'Basic realm="%s"' 299 % self.realm)])('')298 [('WWW-Authenticate', 'Basic realm="%s"' % self.realm), 299 ('Content-Length', 0)])('') 300 300 301 301 302 302 class DigestAuthentication(PasswordFileAuthentication): … … 351 351 start_response('401 Unauthorized', 352 352 [('WWW-Authenticate', 353 353 'Digest realm="%s", nonce="%s", qop="auth", stale="%s"' 354 % (self.realm, nonce, stale))])('') 354 % (self.realm, nonce, stale)), 355 ('Content-Length', 0)])('') 355 356 356 357 def do_auth(self, environ, start_response): 357 358 header = environ.get('HTTP_AUTHORIZATION') -
trac/web/api.py
308 308 309 309 self.send_header('Location', url) 310 310 self.send_header('Content-Type', 'text/plain') 311 self.send_header('Content-Length', 0) 311 312 self.send_header('Pragma', 'no-cache') 312 313 self.send_header('Cache-control', 'no-cache') 313 314 self.send_header('Expires', 'Fri, 01 Jan 1999 00:00:00 GMT') 314 315 self.end_headers() 315 316 316 if self.method != 'HEAD':317 self.write('Redirecting...')318 317 raise RequestDone 319 318 320 319 def display(self, template, content_type='text/html', status=200): … … 406 405 last_modified = http_date(mtime) 407 406 if last_modified == self.get_header('If-Modified-Since'): 408 407 self.send_response(304) 408 self.send_header('Content-Length', 0) 409 409 self.end_headers() 410 410 raise RequestDone 411 411
