From 1ba57a8df2254b1088e0a5233378fa4efb5b3b9b Mon Sep 17 00:00:00 2001 From: XANTRONIX Development Date: Sun, 26 Jul 2020 01:48:08 -0400 Subject: [PATCH] Prevent I frame TX overflow As per the AX.25 v2.2 Specification, Section 6.4.1, "Sending I Frames", do not send an I frame if V(R) + x (TX window) equals V(S) --- src/server.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/src/server.c b/src/server.c index bc45229..33fadf1 100644 --- a/src/server.c +++ b/src/server.c @@ -1618,6 +1618,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 ((len = read(sock->fd, sock->rx_buf, sock->n_maxlen_rx)) < 0) { if (errno == EIO) { (void)sock_shutdown(server, sock);