@@ -274,20 +274,20 @@ async def _handshake(self, resolved_address):
274
274
# If no data is returned after a successful select
275
275
# response, the server has closed the connection
276
276
log .debug ("[#%04X] S: <CLOSE>" , local_port )
277
- self .close ()
277
+ await self .close ()
278
278
raise ServiceUnavailable (
279
279
"Connection to {address} closed without handshake response" .format (
280
280
address = resolved_address ))
281
281
if data_size != 4 :
282
282
# Some garbled data has been received
283
283
log .debug ("[#%04X] S: @*#!" , local_port )
284
- self .close ()
284
+ await self .close ()
285
285
raise BoltProtocolError (
286
286
"Expected four byte Bolt handshake response from %r, received %r instead; check for incorrect port number" % (
287
287
resolved_address , data ), address = resolved_address )
288
288
elif data == b"HTTP" :
289
289
log .debug ("[#%04X] S: <CLOSE>" , local_port )
290
- self .close ()
290
+ await self .close ()
291
291
raise ServiceUnavailable (
292
292
"Cannot to connect to Bolt service on {!r} "
293
293
"(looks like HTTP)" .format (resolved_address ))
@@ -298,14 +298,14 @@ async def _handshake(self, resolved_address):
298
298
299
299
@classmethod
300
300
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 :
303
305
socket_ .shutdown (SHUT_RDWR )
304
306
socket_ .close ()
305
- except OSError :
306
- pass
307
- else :
308
- await socket_ .close ()
307
+ except OSError :
308
+ pass
309
309
310
310
@classmethod
311
311
async def connect (cls , address , * , timeout , custom_resolver , ssl_context ,
@@ -417,6 +417,10 @@ def recv_into(self, buffer, nbytes):
417
417
def sendall (self , data ):
418
418
return self ._wait_for_io (self ._socket .sendall , data )
419
419
420
+ def close (self ):
421
+ self ._socket .shutdown (SHUT_RDWR )
422
+ self ._socket .close ()
423
+
420
424
@classmethod
421
425
def _connect (cls , resolved_address , timeout , keep_alive ):
422
426
"""
@@ -555,8 +559,11 @@ def _handshake(cls, s, resolved_address):
555
559
@classmethod
556
560
def close_socket (cls , socket_ ):
557
561
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 ()
560
567
except OSError :
561
568
pass
562
569
0 commit comments