mirror of
https://github.com/kovidgoyal/calibre.git
synced 2025-07-09 03:04:10 -04:00
Server: Fix connections not being closed after errors/timeouts on the server side
This commit is contained in:
parent
fc576760c2
commit
355635af74
@ -606,8 +606,9 @@ class HTTPConnection(HTTPRequest):
|
||||
self.set_state(WRITE, self.write_iter, output)
|
||||
|
||||
def reset_state(self):
|
||||
ready = not self.close_after_response
|
||||
self.connection_ready()
|
||||
self.ready = not self.close_after_response
|
||||
self.ready = ready
|
||||
self.end_send_optimization()
|
||||
|
||||
def report_unhandled_exception(self, e, formatted_traceback):
|
||||
|
@ -12,6 +12,7 @@ from tempfile import NamedTemporaryFile
|
||||
|
||||
from calibre import guess_type
|
||||
from calibre.srv.tests.base import BaseTest, TestServer
|
||||
from calibre.srv.utils import eintr_retry_call
|
||||
from calibre.utils.monotonic import monotonic
|
||||
|
||||
is_ci = os.environ.get('CI', '').lower() == 'true'
|
||||
@ -284,7 +285,6 @@ class TestHTTP(BaseTest):
|
||||
server.loop.opts.timeout = 10 # ensure socket is not closed because of timeout
|
||||
conn.request('GET', '/close', headers={'Connection':'close'})
|
||||
r = conn.getresponse()
|
||||
self.ae(server.loop.num_active_connections, 1)
|
||||
self.ae(r.status, 200), self.ae(r.read(), 'close')
|
||||
server.loop.wakeup()
|
||||
num = 10
|
||||
@ -293,6 +293,14 @@ class TestHTTP(BaseTest):
|
||||
num -= 1
|
||||
self.ae(server.loop.num_active_connections, 0)
|
||||
self.assertIsNone(conn.sock)
|
||||
|
||||
# Test timeout
|
||||
server.loop.opts.timeout = 0.1
|
||||
conn = server.connect()
|
||||
conn.request('GET', '/something')
|
||||
r = conn.getresponse()
|
||||
self.ae(r.status, 200), self.ae(r.read(), 'something')
|
||||
self.assertIn('Request Timeout', eintr_retry_call(conn.sock.recv, 500))
|
||||
# }}}
|
||||
|
||||
def test_http_response(self): # {{{
|
||||
@ -432,4 +440,3 @@ class TestHTTP(BaseTest):
|
||||
r = conn.getresponse()
|
||||
self.assertEqual(data, r.read())
|
||||
# }}}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user