Better handling, response to FRMR, SABM, and SABME
Changes: * Use patty_ax25_sock_reset() when receiving a FRMR, SABM, or SABME frame * Reply to an SABM or SABME frame with a UA when received by an ESTABLISHED socket
This commit is contained in:
parent
645e2a465f
commit
3db8c9cef3
1 changed files with 29 additions and 7 deletions
36
src/server.c
36
src/server.c
|
@ -1293,14 +1293,23 @@ static int handle_frmr(patty_ax25_server *server,
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sock->state == PATTY_AX25_SOCK_PENDING_CONNECT) {
|
switch (sock->state) {
|
||||||
int ret = patty_ax25_sock_send_sabm(sock, PATTY_AX25_FRAME_POLL);
|
case PATTY_AX25_SOCK_PENDING_CONNECT:
|
||||||
|
if (sock->state == PATTY_AX25_SOCK_PENDING_CONNECT) {
|
||||||
|
sock->retries = sock->n_retry;
|
||||||
|
|
||||||
sock->retries = sock->n_retry;
|
patty_timer_start(&sock->timer_t1);
|
||||||
|
|
||||||
patty_timer_start(&sock->timer_t1);
|
return patty_ax25_sock_send_sabm(sock, PATTY_AX25_FRAME_POLL);
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
case PATTY_AX25_SOCK_ESTABLISHED:
|
||||||
|
patty_ax25_sock_reset(sock);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -1340,11 +1349,24 @@ static int handle_sabm(patty_ax25_server *server,
|
||||||
goto error_sock_new;
|
goto error_sock_new;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
remote->state = PATTY_AX25_SOCK_PENDING_ACCEPT;
|
||||||
|
|
||||||
save_reply_addr(remote, frame);
|
save_reply_addr(remote, frame);
|
||||||
|
|
||||||
created = 1;
|
created = 1;
|
||||||
} else if (remote->state != PATTY_AX25_SOCK_PENDING_ACCEPT) {
|
}
|
||||||
goto reply_dm;
|
|
||||||
|
switch (remote->state) {
|
||||||
|
case PATTY_AX25_SOCK_PENDING_ACCEPT:
|
||||||
|
break;
|
||||||
|
|
||||||
|
case PATTY_AX25_SOCK_ESTABLISHED:
|
||||||
|
patty_ax25_sock_reset(remote);
|
||||||
|
|
||||||
|
return frame->pf == 1? reply_ua(iface, frame, 1): 0;
|
||||||
|
|
||||||
|
default:
|
||||||
|
goto reply_dm;
|
||||||
}
|
}
|
||||||
|
|
||||||
remote->state = PATTY_AX25_SOCK_ESTABLISHED;
|
remote->state = PATTY_AX25_SOCK_ESTABLISHED;
|
||||||
|
|
Loading…
Add table
Reference in a new issue