Stop Timer T1 upon receipt of DM during disconnect
This commit is contained in:
parent
82dd1d50a8
commit
a3995c7e88
1 changed files with 21 additions and 9 deletions
30
src/server.c
30
src/server.c
|
@ -1359,20 +1359,32 @@ static int handle_dm(patty_ax25_server *server,
|
||||||
patty_ax25_if *iface,
|
patty_ax25_if *iface,
|
||||||
patty_ax25_sock *sock,
|
patty_ax25_sock *sock,
|
||||||
patty_ax25_frame *frame) {
|
patty_ax25_frame *frame) {
|
||||||
int client;
|
if (sock == NULL) {
|
||||||
|
|
||||||
if (sock == NULL || sock->state != PATTY_AX25_SOCK_PENDING_CONNECT) {
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((client = client_by_sock(server, sock)) < 0) {
|
switch (sock->state) {
|
||||||
goto error_client_by_sock;
|
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:
|
error_client_by_sock:
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue