Changeset 1011
- Timestamp:
- 03/21/06 13:02:26
- Files:
-
- trunk/cherrypy/_cpwsgiserver.py (modified) (5 diffs)
- trunk/cherrypy/test/test_http.py (added)
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
trunk/cherrypy/_cpwsgiserver.py
r1000 r1011 81 81 break 82 82 else: 83 msg = "Not Found" 84 proto = self.environ.get("SERVER_PROTOCOL", "HTTP/1.0") 85 self.wfile.write("%s 404 %s\r\n" % (proto, msg)) 86 self.wfile.write("Content-Length: %s\r\n\r\n" % len(msg)) 87 self.wfile.write(msg) 88 self.wfile.flush() 89 self.ready = False 83 self.abort("404 Not Found") 90 84 return 91 85 … … 106 100 headers = mimetools.Message(self.rfile) 107 101 self.environ["CONTENT_TYPE"] = headers.getheader("Content-type", "") 108 self.environ["CONTENT_LENGTH"] = headers.getheader("Content-length", "") 102 cl = headers.getheader("Content-length") 103 if method in ("POST", "PUT") and cl is None: 104 # No Content-Length header supplied. This will hang 105 # cgi.FieldStorage, since it cannot determine when to 106 # stop reading from the socket. Until we handle chunked 107 # encoding, always respond with 411 Length Required. 108 # See http://www.cherrypy.org/ticket/493. 109 self.abort("411 Length Required") 110 return 111 self.environ["CONTENT_LENGTH"] = cl or "" 112 109 113 for (k, v) in headers.items(): 110 114 envname = "HTTP_" + k.upper().replace("-","_") 111 115 self.environ[envname] = v 112 116 self.ready = True 117 118 def abort(self, status, msg=""): 119 """Write a simple error message back to the client.""" 120 proto = self.environ.get("SERVER_PROTOCOL", "HTTP/1.0") 121 self.wfile.write("%s %s\r\n" % (proto, status)) 122 self.wfile.write("Content-Length: %s\r\n\r\n" % len(msg)) 123 if msg: 124 self.wfile.write(msg) 125 self.wfile.flush() 126 self.ready = False 113 127 114 128 def start_response(self, status, headers, exc_info = None): … … 210 224 211 225 def __init__(self, bind_addr, wsgi_app, numthreads=10, server_name=None, 212 max=-1, request_queue_size=5): 213 ''' 214 be careful w/ max 215 ''' 226 max=-1, request_queue_size=5, timeout=10): 227 """Be careful w/ max""" 216 228 self.requests = Queue.Queue(max) 217 229 … … 235 247 self.request_queue_size = request_queue_size 236 248 self._workerThreads = [] 249 250 self.timeout = timeout 237 251 238 252 def start(self): … … 310 324 try: 311 325 s, addr = self.socket.accept() 312 if hasattr(s, 'set blocking'):313 s.set blocking(1)326 if hasattr(s, 'settimeout'): 327 s.settimeout(self.timeout) 314 328 request = self.RequestHandlerClass(s, addr, self) 315 329 self.requests.put(request)

