@@ -915,17 +915,24 @@ def __init__(
915915 self ,
916916 port ,
917917 * args ,
918- host = None ,
918+ host = "::" ,
919919 ssl = None ,
920920 family = 0 ,
921921 flags = 0 ,
922922 sock = None ,
923923 backlog = 1 ,
924924 reuse_address = None ,
925925 reuse_port = None ,
926+ kiss_commands = None ,
927+ reset_on_close = False ,
926928 ** kwargs
927929 ):
928- super (TCPKISSServer , self ).__init__ (* args , ** kwargs )
930+ super (TCPKISSServer , self ).__init__ (
931+ * args ,
932+ kiss_commands = kiss_commands ,
933+ reset_on_close = reset_on_close ,
934+ ** kwargs
935+ )
929936
930937 # Bundle up all the connection arguments together.
931938 self ._conn_args = dict (
@@ -941,6 +948,13 @@ def __init__(
941948 )
942949 self ._server = None
943950
951+ def _on_connect (self , transport ):
952+ if self ._state is KISSDeviceState .CLOSED :
953+ # New connection, we're opening again
954+ self .open ()
955+
956+ super (TCPKISSServer , self )._on_connect (transport )
957+
944958 async def _open_connection (self ):
945959 try :
946960 self ._server = await self ._loop .create_server (
@@ -950,6 +964,16 @@ async def _open_connection(self):
950964 self ._log .warning ("Failed to open TCP port" , exc_info = 1 )
951965 self ._on_fail ("open" , exc_info ())
952966
967+ def _on_close (self , exc = None ):
968+ if exc is not None :
969+ self ._log .error ("Closing port due to error %r" , exc )
970+
971+ self ._transport = None
972+
973+ # Prepare for another possible transport
974+ self ._state = KISSDeviceState .OPENING
975+ self ._open_queue = FutureQueue ()
976+
953977 def _close_connection (self ):
954978 super (TCPKISSServer , self )._close_connection ()
955979
0 commit comments