revert fcgi changes

This commit is contained in:
ilvalle
2016-06-10 14:14:39 +02:00
parent fd850ab46f
commit 3103226686
+29 -28
View File
@@ -436,13 +436,13 @@ def encode_pair(name, value):
if nameLength < 128: if nameLength < 128:
s = chr(nameLength) s = chr(nameLength)
else: else:
s = struct.pack('!L', nameLength | 0x80000000) s = struct.pack('!L', nameLength | 0x80000000L)
valueLength = len(value) valueLength = len(value)
if valueLength < 128: if valueLength < 128:
s += chr(valueLength) s += chr(valueLength)
else: else:
s += struct.pack('!L', valueLength | 0x80000000) s += struct.pack('!L', valueLength | 0x80000000L)
return s + name + value return s + name + value
@@ -470,7 +470,7 @@ class Record(object):
while length: while length:
try: try:
data = sock.recv(length) data = sock.recv(length)
except socket.error as e: except socket.error, e:
if e[0] == errno.EAGAIN: if e[0] == errno.EAGAIN:
select.select([sock], [], []) select.select([sock], [], [])
continue continue
@@ -527,7 +527,7 @@ class Record(object):
while length: while length:
try: try:
sent = sock.send(data) sent = sock.send(data)
except socket.error as e: except socket.error, e:
if e[0] == errno.EAGAIN: if e[0] == errno.EAGAIN:
select.select([], [sock], []) select.select([], [sock], [])
continue continue
@@ -592,7 +592,7 @@ class Request(object):
self._flush() self._flush()
self._end(appStatus, protocolStatus) self._end(appStatus, protocolStatus)
def _end(self, appStatus=0, protocolStatus=FCGI_REQUEST_COMPLETE): def _end(self, appStatus=0L, protocolStatus=FCGI_REQUEST_COMPLETE):
self._conn.end_request(self, appStatus, protocolStatus) self._conn.end_request(self, appStatus, protocolStatus)
def _flush(self): def _flush(self):
@@ -615,7 +615,7 @@ class CGIRequest(Request):
self.stderr = sys.stderr self.stderr = sys.stderr
self.data = StringIO.StringIO() self.data = StringIO.StringIO()
def _end(self, appStatus=0, protocolStatus=FCGI_REQUEST_COMPLETE): def _end(self, appStatus=0L, protocolStatus=FCGI_REQUEST_COMPLETE):
sys.exit(appStatus) sys.exit(appStatus)
def _flush(self): def _flush(self):
@@ -664,7 +664,7 @@ class Connection(object):
self.process_input() self.process_input()
except EOFError: except EOFError:
break break
except (select.error, socket.error) as e: except (select.error, socket.error), e:
if e[0] == errno.EBADF: # Socket was closed by Request. if e[0] == errno.EBADF: # Socket was closed by Request.
break break
raise raise
@@ -714,7 +714,7 @@ class Connection(object):
""" """
rec.write(self._sock) rec.write(self._sock)
def end_request(self, req, appStatus=0, def end_request(self, req, appStatus=0L,
protocolStatus=FCGI_REQUEST_COMPLETE, remove=True): protocolStatus=FCGI_REQUEST_COMPLETE, remove=True):
""" """
End a Request. End a Request.
@@ -763,7 +763,7 @@ class Connection(object):
if not self._multiplexed and self._requests: if not self._multiplexed and self._requests:
# Can't multiplex requests. # Can't multiplex requests.
self.end_request(req, 0, FCGI_CANT_MPX_CONN, remove=False) self.end_request(req, 0L, FCGI_CANT_MPX_CONN, remove=False)
else: else:
self._requests[inrec.requestId] = req self._requests[inrec.requestId] = req
@@ -854,7 +854,7 @@ class MultiplexedConnection(Connection):
finally: finally:
self._lock.release() self._lock.release()
def end_request(self, req, appStatus=0, def end_request(self, req, appStatus=0L,
protocolStatus=FCGI_REQUEST_COMPLETE, remove=True): protocolStatus=FCGI_REQUEST_COMPLETE, remove=True):
self._lock.acquire() self._lock.acquire()
try: try:
@@ -990,7 +990,7 @@ class Server(object):
socket.SOCK_STREAM) socket.SOCK_STREAM)
try: try:
sock.getpeername() sock.getpeername()
except socket.error as e: except socket.error, e:
if e[0] == errno.ENOTSOCK: if e[0] == errno.ENOTSOCK:
# Not a socket, assume CGI context. # Not a socket, assume CGI context.
isFCGI = False isFCGI = False
@@ -1010,7 +1010,7 @@ class Server(object):
else: else:
# Run as a server # Run as a server
oldUmask = None oldUmask = None
if isinstance(self._bindAddress, str): if type(self._bindAddress) is str:
# Unix socket # Unix socket
sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM) sock = socket.socket(socket.AF_UNIX, socket.SOCK_STREAM)
try: try:
@@ -1021,7 +1021,7 @@ class Server(object):
oldUmask = os.umask(self._umask) oldUmask = os.umask(self._umask)
else: else:
# INET socket # INET socket
assert isinstance(self._bindAddress, tuple) assert type(self._bindAddress) is tuple
assert len(self._bindAddress) == 2 assert len(self._bindAddress) == 2
sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1) sock.setsockopt(socket.SOL_SOCKET, socket.SO_REUSEADDR, 1)
@@ -1077,7 +1077,7 @@ class Server(object):
while self._keepGoing: while self._keepGoing:
try: try:
r, w, e = select.select([sock], [], [], timeout) r, w, e = select.select([sock], [], [], timeout)
except select.error as e: except select.error, e:
if e[0] == errno.EINTR: if e[0] == errno.EINTR:
continue continue
raise raise
@@ -1085,7 +1085,7 @@ class Server(object):
if r: if r:
try: try:
clientSock, addr = sock.accept() clientSock, addr = sock.accept()
except socket.error as e: except socket.error, e:
if e[0] in (errno.EINTR, errno.EAGAIN): if e[0] in (errno.EINTR, errno.EAGAIN):
continue continue
raise raise
@@ -1131,7 +1131,7 @@ class Server(object):
is passed at initialization time, this must be implemented by is passed at initialization time, this must be implemented by
a subclass. a subclass.
""" """
raise NotImplementedError(self.__class__.__name__ + '.handler') raise NotImplementedError, self.__class__.__name__ + '.handler'
def error(self, req): def error(self, req):
""" """
@@ -1156,7 +1156,7 @@ class WSGIServer(Server):
Set multithreaded to False if your application is not MT-safe. Set multithreaded to False if your application is not MT-safe.
""" """
if 'handler' in kw: if kw.has_key('handler'):
del kw['handler'] # Doesn't make sense to let this through del kw['handler'] # Doesn't make sense to let this through
super(WSGIServer, self).__init__(**kw) super(WSGIServer, self).__init__(**kw)
@@ -1209,7 +1209,7 @@ class WSGIServer(Server):
result = None result = None
def write(data): def write(data):
assert isinstance(data, str), 'write() argument must be string' assert type(data) is str, 'write() argument must be string'
assert headers_set, 'write() before start_response()' assert headers_set, 'write() before start_response()'
if not headers_sent: if not headers_sent:
@@ -1246,15 +1246,15 @@ class WSGIServer(Server):
else: else:
assert not headers_set, 'Headers already set!' assert not headers_set, 'Headers already set!'
assert isinstance(status, str), 'Status must be a string' assert type(status) is str, 'Status must be a string'
assert len(status) >= 4, 'Status must be at least 4 characters' assert len(status) >= 4, 'Status must be at least 4 characters'
assert int(status[:3]), 'Status must begin with 3-digit code' assert int(status[:3]), 'Status must begin with 3-digit code'
assert status[3] == ' ', 'Status must have a space after code' assert status[3] == ' ', 'Status must have a space after code'
assert isinstance(response_headers, list), 'Headers must be a list' assert type(response_headers) is list, 'Headers must be a list'
if __debug__: if __debug__:
for name,val in response_headers: for name,val in response_headers:
assert isinstance(name, str), 'Header names must be strings' assert type(name) is str, 'Header names must be strings'
assert isinstance(val, str), 'Header values must be strings' assert type(val) is str, 'Header values must be strings'
headers_set[:] = [status, response_headers] headers_set[:] = [status, response_headers]
return write return write
@@ -1273,7 +1273,7 @@ class WSGIServer(Server):
finally: finally:
if hasattr(result, 'close'): if hasattr(result, 'close'):
result.close() result.close()
except socket.error as e: except socket.error, e:
if e[0] != errno.EPIPE: if e[0] != errno.EPIPE:
raise # Don't let EPIPE propagate beyond server raise # Don't let EPIPE propagate beyond server
finally: finally:
@@ -1284,9 +1284,9 @@ class WSGIServer(Server):
def _sanitizeEnv(self, environ): def _sanitizeEnv(self, environ):
"""Ensure certain values are present, if required by WSGI.""" """Ensure certain values are present, if required by WSGI."""
if 'SCRIPT_NAME' not in environ: if not environ.has_key('SCRIPT_NAME'):
environ['SCRIPT_NAME'] = '' environ['SCRIPT_NAME'] = ''
if 'PATH_INFO' not in environ: if not environ.has_key('PATH_INFO'):
environ['PATH_INFO'] = '' environ['PATH_INFO'] = ''
# If any of these are missing, it probably signifies a broken # If any of these are missing, it probably signifies a broken
@@ -1295,7 +1295,7 @@ class WSGIServer(Server):
('SERVER_NAME', 'localhost'), ('SERVER_NAME', 'localhost'),
('SERVER_PORT', '80'), ('SERVER_PORT', '80'),
('SERVER_PROTOCOL', 'HTTP/1.0')]: ('SERVER_PROTOCOL', 'HTTP/1.0')]:
if name not in environ: if not environ.has_key(name):
environ['wsgi.errors'].write('%s: missing FastCGI param %s ' environ['wsgi.errors'].write('%s: missing FastCGI param %s '
'required by WSGI!\n' % 'required by WSGI!\n' %
(self.__class__.__name__, name)) (self.__class__.__name__, name))
@@ -1310,10 +1310,11 @@ if __name__ == '__main__':
'<body>\n' \ '<body>\n' \
'<p>Hello World!</p>\n' \ '<p>Hello World!</p>\n' \
'<table border="1">' '<table border="1">'
names = sorted(environ.keys()) names = environ.keys()
names.sort()
for name in names: for name in names:
yield '<tr><td>%s</td><td>%s</td></tr>\n' % ( yield '<tr><td>%s</td><td>%s</td></tr>\n' % (
name, cgi.escape(repr(environ[name]))) name, cgi.escape(`environ[name]`))
form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ, form = cgi.FieldStorage(fp=environ['wsgi.input'], environ=environ,
keep_blank_values=1) keep_blank_values=1)