Also fix some other sockets left open in tests.
Closes #451.
'proxy_username', 'proxy_password'):
if getattr(self.request, key, None):
raise NotImplementedError('%s not supported' % key)
+ if "Connection" not in self.request.headers:
+ self.request.headers["Connection"] = "close"
if "Host" not in self.request.headers:
self.request.headers["Host"] = parsed.netloc
username, password = None, None
self._run_callback(HTTPResponse(self.request, 599, error=e,
request_time=time.time() - self.start_time,
))
+ if hasattr(self, "stream"):
+ self.stream.close()
def _on_close(self):
self._run_callback(HTTPResponse(
stream.connect(("localhost", self.get_http_port()), callback=self.stop)
self.wait()
stream.write(b("\r\n").join([b("POST /hello HTTP/1.1"),
- b("Content-Length: 1024"),
- b("Expect: 100-continue"),
- b("\r\n")]), callback=self.stop)
+ b("Content-Length: 1024"),
+ b("Expect: 100-continue"),
+ b("Connection: close"),
+ b("\r\n")]), callback=self.stop)
self.wait()
stream.read_until(b("\r\n\r\n"), self.stop)
data = self.wait()
stream.read_bytes(int(headers["Content-Length"]), self.stop)
body = self.wait()
self.assertEqual(body, b("Got 1024 bytes in POST"))
+ stream.close()
class EchoHandler(RequestHandler):
def get(self):
stream.read_bytes(int(headers["Content-Length"]), self.stop)
body = self.wait()
self.assertEqual(body, b("Hello world"))
+ stream.close()
+ server.stop()
if not hasattr(socket, 'AF_UNIX') or sys.platform == 'cygwin':
del UnixSocketTest
data = self.wait()
self.assertEqual(data, b("200"))
+ s.close()
+
def test_write_zero_bytes(self):
# Attempting to write zero bytes should run the callback without
# going into an infinite loop.
# As a side effect, the stream is now listening for connection
# close (if it wasn't already), but is not listening for writes
self.assertEqual(server._state, IOLoop.READ|IOLoop.ERROR)
+ server.close()
+ client.close()
def test_connection_refused(self):
# When a connection is refused, the connect callback should not
def get(self):
logging.info("queuing trigger")
self.queue.append(self.finish)
- self.wake_callback()
+ if self.get_argument("wake", "true") == "true":
+ self.wake_callback()
class HangHandler(RequestHandler):
@asynchronous
self.assertEqual("POST", response.request.method)
def test_request_timeout(self):
- response = self.fetch('/hang', request_timeout=0.1)
+ response = self.fetch('/trigger?wake=false', request_timeout=0.1)
self.assertEqual(response.code, 599)
self.assertTrue(0.099 < response.request_time < 0.11, response.request_time)
self.assertEqual(str(response.error), "HTTP 599: Timeout")
+ # trigger the hanging request to let it clean up after itself
+ self.triggers.popleft()()
def test_ipv6(self):
if not socket.has_ipv6: