Drop patty_kiss_tnc_recv() from handle_sock_raw()

Refactor handle_sock_raw() in src/server.c to remove usage of
patty_kiss_tnc_recv() in favor of its component methods:

    * patty_kiss_tnc_fill()
    * patty_kiss_tnc_drain()
    * patty_kiss_tnc_ready()
    * patty_kiss_tnc_flush()
This commit is contained in:
XANTRONIX Development 2020-09-22 21:27:23 -05:00 committed by XANTRONIX Industrial
parent 50eaef806d
commit e053d6cdbc

View file

@ -2097,34 +2097,44 @@ error_unknown:
static int handle_sock_raw(patty_ax25_server *server, static int handle_sock_raw(patty_ax25_server *server,
patty_ax25_sock *sock) { patty_ax25_sock *sock) {
if (!FD_ISSET(sock->fd, &server->fds_r) || sock->iface == NULL) { patty_kiss_tnc *raw = sock->raw;
patty_ax25_if *iface = sock->iface;
ssize_t len;
if (!FD_ISSET(sock->fd, &server->fds_r) || raw == NULL || iface == NULL) {
return 0; return 0;
} }
do { if ((len = patty_kiss_tnc_fill(raw)) < 0) {
goto error_io;
} else if (len == 0) {
(void)sock_close(server, sock);
goto done;
}
while (1) {
ssize_t len; ssize_t len;
if ((len = patty_ax25_sock_recv(sock, if ((len = patty_kiss_tnc_drain(raw, iface->tx_buf, iface->mtu)) < 0) {
sock->iface->tx_buf, goto error_io;
sock->iface->mtu)) < 0) { }
if (errno == EIO) {
(void)sock_close(server, sock);
break;
} else {
goto error_io;
}
} else if (len == 0) {
(void)sock_close(server, sock);
if (!patty_kiss_tnc_ready(raw)) {
break; break;
} }
if (patty_ax25_if_send(sock->iface, sock->iface->tx_buf, len) < 0) { if ((len = patty_kiss_tnc_flush(raw)) < 0) {
goto error_io; goto error_io;
} }
} while (patty_ax25_sock_recv_pending(sock));
if (patty_ax25_if_send(iface, iface->tx_buf, len) < 0) {
goto error_io;
}
}
done:
return 0; return 0;
error_io: error_io: