Skip to content

Commit 0cca381

Browse files
authored
Fix socket wrapper close methods (#705)
1 parent c71b938 commit 0cca381

File tree

1 file changed

+18
-11
lines changed

1 file changed

+18
-11
lines changed

neo4j/_async_compat/network/_bolt_socket.py

+18-11
Original file line numberDiff line numberDiff line change
@@ -274,20 +274,20 @@ async def _handshake(self, resolved_address):
274274
# If no data is returned after a successful select
275275
# response, the server has closed the connection
276276
log.debug("[#%04X] S: <CLOSE>", local_port)
277-
self.close()
277+
await self.close()
278278
raise ServiceUnavailable(
279279
"Connection to {address} closed without handshake response".format(
280280
address=resolved_address))
281281
if data_size != 4:
282282
# Some garbled data has been received
283283
log.debug("[#%04X] S: @*#!", local_port)
284-
self.close()
284+
await self.close()
285285
raise BoltProtocolError(
286286
"Expected four byte Bolt handshake response from %r, received %r instead; check for incorrect port number" % (
287287
resolved_address, data), address=resolved_address)
288288
elif data == b"HTTP":
289289
log.debug("[#%04X] S: <CLOSE>", local_port)
290-
self.close()
290+
await self.close()
291291
raise ServiceUnavailable(
292292
"Cannot to connect to Bolt service on {!r} "
293293
"(looks like HTTP)".format(resolved_address))
@@ -298,14 +298,14 @@ async def _handshake(self, resolved_address):
298298

299299
@classmethod
300300
async def close_socket(cls, socket_):
301-
if isinstance(socket_, socket):
302-
try:
301+
try:
302+
if isinstance(socket_, AsyncBoltSocket):
303+
await socket_.close()
304+
else:
303305
socket_.shutdown(SHUT_RDWR)
304306
socket_.close()
305-
except OSError:
306-
pass
307-
else:
308-
await socket_.close()
307+
except OSError:
308+
pass
309309

310310
@classmethod
311311
async def connect(cls, address, *, timeout, custom_resolver, ssl_context,
@@ -417,6 +417,10 @@ def recv_into(self, buffer, nbytes):
417417
def sendall(self, data):
418418
return self._wait_for_io(self._socket.sendall, data)
419419

420+
def close(self):
421+
self._socket.shutdown(SHUT_RDWR)
422+
self._socket.close()
423+
420424
@classmethod
421425
def _connect(cls, resolved_address, timeout, keep_alive):
422426
"""
@@ -555,8 +559,11 @@ def _handshake(cls, s, resolved_address):
555559
@classmethod
556560
def close_socket(cls, socket_):
557561
try:
558-
socket_.shutdown(SHUT_RDWR)
559-
socket_.close()
562+
if isinstance(socket_, BoltSocket):
563+
socket.close()
564+
else:
565+
socket_.shutdown(SHUT_RDWR)
566+
socket_.close()
560567
except OSError:
561568
pass
562569

0 commit comments

Comments
 (0)