From 87a580b45e388151b96baf9db59eec182c037b29 Mon Sep 17 00:00:00 2001 From: "F. Duncanh" Date: Thu, 31 Oct 2024 11:26:30 -0400 Subject: [PATCH] raop_buffer.c: fix seqnum wraparound error reported by @kgbook --- lib/raop_buffer.c | 9 ++++----- lib/raop_rtp_mirror.c | 2 +- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/lib/raop_buffer.c b/lib/raop_buffer.c index 0dd0183..4fc8d76 100644 --- a/lib/raop_buffer.c +++ b/lib/raop_buffer.c @@ -275,7 +275,7 @@ void raop_buffer_handle_resends(raop_buffer_t *raop_buffer, raop_resend_cb_t res assert(resend_cb); if (seqnum_cmp(raop_buffer->first_seqnum, raop_buffer->last_seqnum) < 0) { - int seqnum, count; + unsigned short seqnum, count = 0; logger_log(raop_buffer->logger, LOGGER_DEBUG, "raop_buffer_handle_resends first_seqnum=%u last seqnum=%u", raop_buffer->first_seqnum, raop_buffer->last_seqnum); for (seqnum = raop_buffer->first_seqnum; seqnum_cmp(seqnum, raop_buffer->last_seqnum) < 0; seqnum++) { @@ -283,12 +283,11 @@ void raop_buffer_handle_resends(raop_buffer_t *raop_buffer, raop_resend_cb_t res if (entry->filled) { break; } + count++; } - if (seqnum_cmp(seqnum, raop_buffer->first_seqnum) == 0) { - return; + if (count){ + resend_cb(opaque, raop_buffer->first_seqnum, count); } - count = seqnum_cmp(seqnum, raop_buffer->first_seqnum); - resend_cb(opaque, raop_buffer->first_seqnum, count); } } diff --git a/lib/raop_rtp_mirror.c b/lib/raop_rtp_mirror.c index 91f471f..a39cbee 100644 --- a/lib/raop_rtp_mirror.c +++ b/lib/raop_rtp_mirror.c @@ -81,7 +81,7 @@ struct raop_rtp_mirror_s { raop_callbacks_t callbacks; raop_ntp_t *ntp; - /* Buffer to handle all resends */ + /* mirror buffer for decryption */ mirror_buffer_t *buffer; /* Remote address as sockaddr */