Skip to content

Commit a6fe3ed

Browse files
committed
Fix #172: Set server.transport to None on .closing()
1 parent dad995f commit a6fe3ed

File tree

3 files changed

+32
-2
lines changed

3 files changed

+32
-2
lines changed

CHANGES.txt

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -16,6 +16,8 @@ CHANGES
1616

1717
- Drop closed connections from connector #173
1818

19+
- Set server.transport to None on .closing() #172
20+
1921
0.9.3 (10-30-2014)
2022
------------------
2123

aiohttp/server.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -102,6 +102,7 @@ def closing(self):
102102
if ((not self._reading_request or self._request_handler is None) and
103103
self.transport is not None):
104104
self.transport.close()
105+
self.transport = None
105106

106107
def connection_made(self, transport):
107108
super().connection_made(transport)

tests/test_http_server.py

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -48,11 +48,38 @@ def test_closing(self):
4848
srv._keep_alive_handle = keep_alive_handle
4949
timeout_handle = unittest.mock.Mock()
5050
srv._timeout_handle = timeout_handle
51-
srv.transport = unittest.mock.Mock()
51+
transport = srv.transport = unittest.mock.Mock()
5252
srv.writer = unittest.mock.Mock()
5353

5454
srv.closing()
55-
self.assertTrue(srv.transport.close.called)
55+
self.assertTrue(transport.close.called)
56+
self.assertIsNone(srv.transport)
57+
58+
self.assertIsNotNone(srv._keep_alive_handle)
59+
self.assertFalse(keep_alive_handle.cancel.called)
60+
61+
self.assertIsNotNone(srv._timeout_handle)
62+
self.assertFalse(timeout_handle.cancel.called)
63+
64+
def test_double_closing(self):
65+
srv = server.ServerHttpProtocol(loop=self.loop)
66+
srv._keep_alive = True
67+
68+
keep_alive_handle = unittest.mock.Mock()
69+
srv._keep_alive_handle = keep_alive_handle
70+
timeout_handle = unittest.mock.Mock()
71+
srv._timeout_handle = timeout_handle
72+
transport = srv.transport = unittest.mock.Mock()
73+
srv.writer = unittest.mock.Mock()
74+
75+
srv.closing()
76+
self.assertTrue(transport.close.called)
77+
self.assertIsNone(srv.transport)
78+
79+
transport.reset_mock()
80+
srv.closing()
81+
self.assertFalse(transport.close.called)
82+
self.assertIsNone(srv.transport)
5683

5784
self.assertIsNotNone(srv._keep_alive_handle)
5885
self.assertFalse(keep_alive_handle.cancel.called)

0 commit comments

Comments
 (0)