Author: chrisz
Date: Fri Nov 3 16:02:06 2006
New Revision: 5883
Modified:
Webware/trunk/WebKit/HTTPServer.py
Log:
Optimized uploading of large files with HTTPServer (as suggested by Dan Milstein).
Modified: Webware/trunk/WebKit/HTTPServer.py
==============================================================================
--- Webware/trunk/WebKit/HTTPServer.py (original)
+++ Webware/trunk/WebKit/HTTPServer.py Fri Nov 3 16:02:06 2006
@@ -5,10 +5,6 @@
import BaseHTTPServer
import sys, os, socket, time, errno
-try:
- from cStringIO import StringIO
-except ImportError:
- from StringIO import StringIO
class HTTPHandler(BaseHTTPServer.BaseHTTPRequestHandler):
@@ -35,6 +31,9 @@
if self.headers.has_key('Content-Type'):
env['CONTENT_TYPE'] = self.headers['Content-Type']
del self.headers['Content-Type']
+ if self.headers.has_key('Content-Length'):
+ env['CONTENT_LENGTH'] = self.headers['Content-Length']
+ del self.headers['Content-Type']
key = 'If-Modified-Since'
if self.headers.has_key(key):
env[key] = self.headers[key]
@@ -55,16 +54,13 @@
env['SERVER_SOFTWARE'] = self.server_version
env['SERVER_PROTOCOL'] = self.protocol_version
env['GATEWAY_INTERFACE'] = 'CGI/1.1'
- input = self.headers.has_key('Content-Length') \
- and self.rfile.read(int(self.headers['Content-Length'])) or ''
-
if self._server._verbose:
requestURI = Funcs.requestURI(env)
startTime = time.time()
sys.stdout.write('%5i %s %s\n' % (self._requestID,
timestamp()['pretty'], requestURI))
- self.doTransaction(env, input)
+ self.doTransaction(env, self.rfile)
if self._server._verbose:
duration = ('%0.2f secs' % (time.time() - startTime)).ljust(19)
@@ -137,7 +133,7 @@
'format': 'CGI',
'time': time.time(),
'environ': env,
- 'input': StringIO(input),
+ 'input': input,
'requestID': self._requestID,
}
self.dispatchRawRequest(requestDict, streamOut)
|