Skip to content

Commit 18a281e

Browse files
committed
Drop closed connection from connector
1 parent a170ed8 commit 18a281e

File tree

2 files changed

+16
-11
lines changed

2 files changed

+16
-11
lines changed

aiohttp/connector.py

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,9 @@ def loop(self):
3535

3636
def close(self):
3737
if self._transport is not None:
38-
self._transport.close()
38+
self._connector._release(
39+
self._key, self._request, self._transport, self._protocol,
40+
should_close=True)
3941
self._transport = None
4042
self._wr = None
4143

@@ -173,21 +175,22 @@ def _get(self, key):
173175

174176
return None, None
175177

176-
def _release(self, key, req, transport, protocol):
178+
def _release(self, key, req, transport, protocol, *, should_close=False):
177179
resp = req.response
178-
should_close = False
179180

180-
if resp is not None:
181-
if resp.message is None:
182-
should_close = True
183-
else:
184-
should_close = resp.message.should_close
181+
if not should_close:
182+
if resp is not None:
183+
if resp.message is None:
184+
should_close = True
185+
else:
186+
should_close = resp.message.should_close
185187

186-
if self._force_close:
187-
should_close = True
188+
if self._force_close:
189+
should_close = True
188190

189191
reader = protocol.reader
190192
if should_close or (reader.output and not reader.output.at_eof()):
193+
self._conns.pop(key, None)
191194
transport.close()
192195
else:
193196
conns = self._conns.get(key)

tests/test_connector.py

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,8 +39,10 @@ def test_close(self):
3939
self.connector, self.key, self.request,
4040
self.transport, self.protocol, self.loop)
4141
conn.close()
42-
self.assertTrue(self.transport.close.called)
4342
self.assertIsNone(conn._transport)
43+
self.connector._release.assert_called_with(
44+
self.key, self.request, self.transport, self.protocol,
45+
should_close=True)
4446

4547
def test_release(self):
4648
conn = Connection(

0 commit comments

Comments
 (0)