Skip to content

Commit 2dcfa46

Browse files
committed
Gracefully handle ConnectionErrors in proxy
1 parent dd672f4 commit 2dcfa46

File tree

1 file changed

+42
-30
lines changed

1 file changed

+42
-30
lines changed

asyncpg/_testbase/fuzzer.py

Lines changed: 42 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -247,37 +247,49 @@ async def _write(self, sock, data):
247247
async def proxy_to_backend(self):
248248
buf = None
249249

250-
while True:
251-
await self.connectivity.wait()
252-
if buf is not None:
253-
data = buf
254-
buf = None
255-
else:
256-
data = await self._read(self.client_sock, 4096)
257-
if data == b'':
258-
self.loop.call_soon(self.close)
259-
break
260-
if self.connectivity_loss.is_set():
261-
if data:
262-
buf = data
263-
continue
264-
await self._write(self.backend_sock, data)
250+
try:
251+
while True:
252+
await self.connectivity.wait()
253+
if buf is not None:
254+
data = buf
255+
buf = None
256+
else:
257+
data = await self._read(self.client_sock, 4096)
258+
if data == b'':
259+
break
260+
if self.connectivity_loss.is_set():
261+
if data:
262+
buf = data
263+
continue
264+
await self._write(self.backend_sock, data)
265+
266+
except ConnectionError:
267+
pass
268+
269+
finally:
270+
self.loop.call_soon(self.close)
265271

266272
async def proxy_from_backend(self):
267273
buf = None
268274

269-
while True:
270-
await self.connectivity.wait()
271-
if buf is not None:
272-
data = buf
273-
buf = None
274-
else:
275-
data = await self._read(self.backend_sock, 4096)
276-
if data == b'':
277-
self.loop.call_soon(self.close)
278-
break
279-
if self.connectivity_loss.is_set():
280-
if data:
281-
buf = data
282-
continue
283-
await self._write(self.client_sock, data)
275+
try:
276+
while True:
277+
await self.connectivity.wait()
278+
if buf is not None:
279+
data = buf
280+
buf = None
281+
else:
282+
data = await self._read(self.backend_sock, 4096)
283+
if data == b'':
284+
break
285+
if self.connectivity_loss.is_set():
286+
if data:
287+
buf = data
288+
continue
289+
await self._write(self.client_sock, data)
290+
291+
except ConnectionError:
292+
pass
293+
294+
finally:
295+
self.loop.call_soon(self.close)

0 commit comments

Comments
 (0)