wsgi: environ[headers_raw] tuple of unmodified name: value pairs
https://github.com/eventlet/eventlet/pull/278
This commit is contained in:
@@ -601,9 +601,9 @@ class HttpProtocol(BaseHTTPServer.BaseHTTPRequestHandler):
|
|||||||
else:
|
else:
|
||||||
headers = [h.split(':', 1) for h in headers]
|
headers = [h.split(':', 1) for h in headers]
|
||||||
|
|
||||||
for k, v in headers:
|
env['headers_raw'] = headers_raw = tuple((k, v.strip()) for k, v in headers)
|
||||||
|
for k, v in headers_raw:
|
||||||
k = k.replace('-', '_').upper()
|
k = k.replace('-', '_').upper()
|
||||||
v = v.strip()
|
|
||||||
if k in env:
|
if k in env:
|
||||||
continue
|
continue
|
||||||
envk = 'HTTP_' + k
|
envk = 'HTTP_' + k
|
||||||
|
@@ -1515,6 +1515,19 @@ class TestHttpd(_TestBase):
|
|||||||
finally:
|
finally:
|
||||||
shutil.rmtree(tempdir)
|
shutil.rmtree(tempdir)
|
||||||
|
|
||||||
|
def test_headers_raw(self):
|
||||||
|
def app(environ, start_response):
|
||||||
|
start_response('200 OK', [])
|
||||||
|
return [b'\n'.join('{0}: {1}'.format(*kv).encode() for kv in environ['headers_raw'])]
|
||||||
|
|
||||||
|
self.spawn_server(site=app)
|
||||||
|
sock = eventlet.connect(self.server_addr)
|
||||||
|
sock.sendall(b'GET / HTTP/1.1\r\nHost: localhost\r\nx-ANY_k: one\r\nx-ANY_k: two\r\n\r\n')
|
||||||
|
result = read_http(sock)
|
||||||
|
sock.close()
|
||||||
|
assert result.status == 'HTTP/1.1 200 OK'
|
||||||
|
assert result.body == b'Host: localhost\nx-ANY_k: one\nx-ANY_k: two'
|
||||||
|
|
||||||
|
|
||||||
def read_headers(sock):
|
def read_headers(sock):
|
||||||
fd = sock.makefile('rb')
|
fd = sock.makefile('rb')
|
||||||
|
Reference in New Issue
Block a user