From 643f57d52b4dda4a370cad7213d32f51ced212a8 Mon Sep 17 00:00:00 2001 From: Gregor Fabritius Date: Mon, 16 Jul 2012 01:27:08 +0200 Subject: [PATCH] Initiating resync when receiving strange packet The packet type 0x56, sequence number 0, containing 4 bytes (the first two are the sequence number of the previously requested packet) initiates a resync. Not sure what this packet is supposed to do, but it occurs after heavy requesting resending of packets. Seems to be an out of sync situation, so resyncing is not the worst idea. Signed-off-by: Gregor Fabritius --- hairtunes.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/hairtunes.c b/hairtunes.c index 3f83f19f..5671c665 100644 --- a/hairtunes.c +++ b/hairtunes.c @@ -451,10 +451,17 @@ static void *rtp_thread_func(void *arg) { plen -= 12; // check if packet contains enough content to be reasonable - if (plen < 16) - continue; - - buffer_put_packet(seqno, pktp, plen); + if (plen >= 16) { + buffer_put_packet(seqno, pktp, plen); + } else { + // resync? + if (type == 0x56 && seqno == 0) { + fprintf(stderr, "Suspected resync request packet received. Initiating resync.\n"); + pthread_mutex_lock(&ab_mutex); + ab_resync(); + pthread_mutex_unlock(&ab_mutex); + } + } } }