Test for infinite loop in wsgi, based on redbo's repro.

This commit is contained in:
Ryan Williams
2010-05-13 16:23:54 -07:00
parent a7039cee84
commit f874a93827

View File

@@ -11,6 +11,7 @@ from unittest import main
from eventlet import api
from eventlet import util
from eventlet import greenio
from eventlet import event
from eventlet.green import socket as greensocket
from eventlet import wsgi
from eventlet.support import get_errno
@@ -833,6 +834,28 @@ class TestHttpd(_TestBase):
# (one terminates the chunk, one terminates the body)
self.assertEqual(response, ['0', '', ''])
def test_aborted_chunked_post(self):
read_content = event.Event()
def chunk_reader(env, start_response):
content = env['wsgi.input'].read(1024)
read_content.send(content)
start_response('200 OK', [('Content-Type', 'text/plain')])
return [content]
self.site.application = chunk_reader
expected_body = 'a bunch of stuff'
data = "\r\n".join(['PUT /somefile HTTP/1.0',
'Transfer-Encoding: chunked',
'',
'def',
expected_body])
# start PUT-ing some chunked data but close prematurely
sock = eventlet.connect(('127.0.0.1', self.port))
sock.sendall(data)
sock.close()
# the test passes if we successfully get here, and read all the data
# in spite of the early close
self.assertEqual(read_content.wait(), expected_body)
def read_headers(sock):
fd = sock.makefile()
try: