@@ -266,9 +266,11 @@ async def transport_listen(self) -> bool:
266266 self .loop = asyncio .get_running_loop ()
267267 self .is_closing = False
268268 try :
269- self .transport = await self .call_create ()
270- if isinstance (self .transport , tuple ):
271- self .transport = self .transport [0 ]
269+ _transport = await self .call_create ()
270+ if isinstance (_transport , tuple ):
271+ self .transport = _transport [0 ]
272+ else :
273+ self .transport = _transport
272274 except OSError as exc :
273275 Log .warning ("Failed to start server {}" , exc )
274276 # self.transport_close(intern=True)
@@ -435,7 +437,7 @@ def transport_close(self, intern: bool = False, reconnect: bool = False) -> None
435437
436438 def reset_delay (self ) -> None :
437439 """Reset wait time before next reconnect to minimal period."""
438- self .reconnect_delay_current = self .comm_params .reconnect_delay
440+ self .reconnect_delay_current = self .comm_params .reconnect_delay or 0
439441
440442 def is_active (self ) -> bool :
441443 """Return true if connected/listening."""
@@ -469,6 +471,12 @@ def handle_new_connection(self) -> ModbusProtocol:
469471
470472 async def do_reconnect (self ) -> None :
471473 """Handle reconnect as a task."""
474+ if not (
475+ self .comm_params .reconnect_delay and self .comm_params .reconnect_delay_max
476+ ):
477+ raise AssertionError (
478+ "do_reconnect should not be called if reconnect_delay is None"
479+ )
472480 try :
473481 self .reconnect_delay_current = self .comm_params .reconnect_delay
474482 while True :
@@ -519,7 +527,7 @@ def __init__(self, protocol: ModbusProtocol, listen: int | None = None) -> None:
519527 asyncio .DatagramTransport .__init__ (self )
520528 asyncio .Transport .__init__ (self )
521529 self .protocol : ModbusProtocol = protocol
522- self .other_modem : NullModem = None
530+ self .other_modem : NullModem | None = None
523531 self .listen = listen
524532 self .manipulator : Callable [[bytes ], list [bytes ]] | None = None
525533 self ._is_closing = False
@@ -605,6 +613,8 @@ def sendto(self, data: bytes, _addr: Any = None) -> None:
605613
606614 def write (self , data : bytes ) -> None :
607615 """Send data."""
616+ if not self .other_modem :
617+ raise AssertionError ("Missing other_modem" )
608618 if not self .manipulator :
609619 self .other_modem .protocol .data_received (data )
610620 return
0 commit comments