@@ -1507,7 +1507,6 @@ async def reconnected_cb():
1507
1507
reconnected .set_result (True )
1508
1508
1509
1509
async def err_cb (e ):
1510
- print (e )
1511
1510
nonlocal errors
1512
1511
errors .append (e )
1513
1512
@@ -1583,7 +1582,7 @@ async def bad_server(reader, writer):
1583
1582
await asyncio .sleep (0.2 , loop = self .loop )
1584
1583
writer .close ()
1585
1584
1586
- await asyncio .start_server (
1585
+ sv = await asyncio .start_server (
1587
1586
bad_server , '127.0.0.1' , 4555 , loop = self .loop
1588
1587
)
1589
1588
@@ -1605,6 +1604,53 @@ async def error_cb(e):
1605
1604
await nc .connect (** options )
1606
1605
self .assertEqual (1 , len (errors ))
1607
1606
self .assertEqual (errors [0 ], nc .last_error )
1607
+ sv .close ()
1608
+
1609
+ @async_test
1610
+ async def test_empty_response_from_server_after_reconnect (self ):
1611
+ async def bad_server (reader , writer ):
1612
+ writer .write ("INFO {}\r \n PONG\r \n " .encode ())
1613
+ await asyncio .sleep (0.2 , loop = self .loop )
1614
+ writer .close ()
1615
+
1616
+ async def bad_server2 (reader , writer ):
1617
+ writer .write (b'' )
1618
+
1619
+ sv = await asyncio .start_server (
1620
+ bad_server , '127.0.0.1' , 4556 , loop = self .loop
1621
+ )
1622
+ sv2 = await asyncio .start_server (
1623
+ bad_server2 , '127.0.0.1' , 4557 , loop = self .loop
1624
+ )
1625
+
1626
+ future = asyncio .Future ()
1627
+
1628
+ async def error_cb (e ):
1629
+ if type (e ) is asyncio .TimeoutError :
1630
+ future .set_result (True )
1631
+
1632
+ nc = NATS ()
1633
+ options = {
1634
+ 'servers' : ["nats://127.0.0.1:4556" , "nats://127.0.0.1:4557" ],
1635
+ 'error_cb' : error_cb ,
1636
+ 'io_loop' : self .loop ,
1637
+ 'allow_reconnect' : True ,
1638
+ 'reconnect_time_wait' : 0.1 ,
1639
+ 'dont_randomize' : True ,
1640
+ 'connect_timeout' : 0.5
1641
+ }
1642
+
1643
+ await nc .connect (** options )
1644
+ sv .close ()
1645
+ await sv .wait_closed ()
1646
+ await asyncio .sleep (1 , loop = self .loop )
1647
+ sv2 .close ()
1648
+ await sv2 .wait_closed ()
1649
+
1650
+ # Wait for the timeout error from the EOF to the second server.
1651
+ await asyncio .wait_for (future , 1 )
1652
+
1653
+ await nc .close ()
1608
1654
1609
1655
@async_test
1610
1656
async def test_malformed_info_response_from_server (self ):
0 commit comments