From a3995c7e88cfb5c53e8dfb8e889b13bd4ffddc31 Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Fri, 7 Aug 2020 21:50:01 -0400 Subject: [PATCH] Stop Timer T1 upon receipt of DM during disconnect --- src/server.c | 30 +++++++++++++++++++++--------- 1 file changed, 21 insertions(+), 9 deletions(-) diff --git a/src/server.c b/src/server.c index afae5bc..99f9d30 100644 --- a/src/server.c +++ b/src/server.c @@ -1359,20 +1359,32 @@ static int handle_dm(patty_ax25_server *server, patty_ax25_if *iface, patty_ax25_sock *sock, patty_ax25_frame *frame) { - int client; - - if (sock == NULL || sock->state != PATTY_AX25_SOCK_PENDING_CONNECT) { + if (sock == NULL) { return 0; } - if ((client = client_by_sock(server, sock)) < 0) { - goto error_client_by_sock; + switch (sock->state) { + case PATTY_AX25_SOCK_PENDING_CONNECT: { + int client; + + if ((client = client_by_sock(server, sock)) < 0) { + goto error_client_by_sock; + } + + patty_ax25_sock_reset(sock); + + return respond_connect(client, -1, ECONNREFUSED); + } + + case PATTY_AX25_SOCK_PENDING_DISCONNECT: + patty_timer_stop(&sock->timer_t1); + + return sock_close(server, sock); + + default: + break; } - patty_ax25_sock_reset(sock); - - return respond_connect(client, -1, ECONNREFUSED); - error_client_by_sock: return -1; }