diff --git a/src/aprs_is.c b/src/aprs_is.c index 50d2595..cea9cb9 100644 --- a/src/aprs_is.c +++ b/src/aprs_is.c @@ -315,11 +315,15 @@ int patty_ax25_aprs_is_pending(patty_ax25_aprs_is *aprs) { } ssize_t patty_ax25_aprs_is_flush(patty_ax25_aprs_is *aprs) { - ssize_t ret = aprs->encoded; + ssize_t ret; if (patty_ax25_aprs_is_pending(aprs)) { aprs->stats.rx_frames++; - aprs->stats.rx_bytes += ret; + aprs->stats.rx_bytes += aprs->encoded; + + ret = aprs->encoded; + } else { + ret = 0; } aprs->state = APRS_IS_HEADER; diff --git a/src/tnc.c b/src/tnc.c index 1363adc..4333508 100644 --- a/src/tnc.c +++ b/src/tnc.c @@ -321,20 +321,22 @@ int patty_kiss_tnc_pending(patty_kiss_tnc *tnc) { } ssize_t patty_kiss_tnc_flush(patty_kiss_tnc *tnc) { + ssize_t ret; + if (patty_kiss_tnc_pending(tnc)) { - ssize_t ret = (ssize_t)tnc->offset_o; - - tnc->state = KISS_NONE; - tnc->command = PATTY_KISS_RETURN; - tnc->offset_o = 0; - tnc->stats.rx_frames++; - tnc->stats.rx_bytes += ret; + tnc->stats.rx_bytes += tnc->offset_o; - return ret; + ret = tnc->offset_o; + } else { + ret = 0; } - return 0; + tnc->state = KISS_NONE; + tnc->command = PATTY_KISS_RETURN; + tnc->offset_o = 0; + + return ret; } ssize_t patty_kiss_tnc_recv(patty_kiss_tnc *tnc, void *buf, size_t len) {