Skip to content

Commit c26f5fa

Browse files
committed
kiss: TCPKISServer: Disable TNC commands, add re-connect handling
1 parent b62f675 commit c26f5fa

1 file changed

Lines changed: 26 additions & 2 deletions

File tree

aioax25/kiss.py

Lines changed: 26 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)