Fix dropped packets to promisc interfaces
This commit is contained in:
parent
16179894d2
commit
c287eb7a61
1 changed files with 17 additions and 9 deletions
26
src/server.c
26
src/server.c
|
@ -292,6 +292,10 @@ static int sock_shutdown(patty_ax25_server *server,
|
|||
patty_ax25_sock *sock) {
|
||||
fd_clear(server, sock->fd);
|
||||
|
||||
if (sock->type != PATTY_AX25_SOCK_STREAM) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (sock->status != PATTY_AX25_SOCK_ESTABLISHED) {
|
||||
return 0;
|
||||
}
|
||||
|
@ -1754,11 +1758,13 @@ static int handle_sock(uint32_t key,
|
|||
goto done;
|
||||
}
|
||||
|
||||
/*
|
||||
* NOTE: See AX.25 2.2, Section 6.4.1, "Sending I Frames"
|
||||
*/
|
||||
if (sock->seq_recv + sock->n_window_tx == sock->seq_send) {
|
||||
goto done;
|
||||
if (sock->type == PATTY_AX25_SOCK_STREAM) {
|
||||
/*
|
||||
* NOTE: See AX.25 2.2, Section 6.4.1, "Sending I Frames"
|
||||
*/
|
||||
if (sock->seq_recv + sock->n_window_tx == sock->seq_send) {
|
||||
goto done;
|
||||
}
|
||||
}
|
||||
|
||||
if ((len = read(sock->fd, sock->rx_buf, sock->n_maxlen_rx)) < 0) {
|
||||
|
@ -1779,10 +1785,12 @@ static int handle_sock(uint32_t key,
|
|||
goto error_sock_write;
|
||||
}
|
||||
|
||||
/*
|
||||
* AX.25 v2.2, Section 6.4.1 "Sending I Frames"
|
||||
*/
|
||||
patty_timer_start(&sock->timer_t1, sock->n_ack);
|
||||
if (sock->type == PATTY_AX25_SOCK_STREAM) {
|
||||
/*
|
||||
* AX.25 v2.2, Section 6.4.1 "Sending I Frames"
|
||||
*/
|
||||
patty_timer_start(&sock->timer_t1, sock->n_ack);
|
||||
}
|
||||
|
||||
done:
|
||||
return 0;
|
||||
|
|
Loading…
Add table
Reference in a new issue