浏览代码

continue the AirPlay saga - release

philippe44 5 年之前
父节点
当前提交
6b5c9188c6
共有 1 个文件被更改,包括 4 次插入3 次删除
  1. 4 3
      components/raop/rtp.c

+ 4 - 3
components/raop/rtp.c

@@ -654,7 +654,7 @@ static void *rtp_thread_func(void *arg) {
 				u32_t remote_gap = NTP2MS(remote - ctx->timing.remote);
 
 				// try to get NTP every 3 sec or every time if we are not synced
-				if (!count-- || !(ctx->synchro.status && NTP_SYNC)) {
+				if (!count-- || !(ctx->synchro.status & NTP_SYNC)) {
 					rtp_request_timing(ctx);
 					count = 3;
 				}
@@ -700,9 +700,10 @@ static void *rtp_thread_func(void *arg) {
 				u64_t remote 	  =(((u64_t) ntohl(*(u32_t*)(pktp+16))) << 32) + ntohl(*(u32_t*)(pktp+20));
 				u32_t roundtrip   = gettime_ms() - reference;
 				
-				// better discard sync packets when roundtrip is suspicious and ask for another one
+				// better discard sync packets when roundtrip is suspicious
 				if (roundtrip > 100) {
-					rtp_request_timing(ctx);
+					// ask for another one only if we are not synced already
+					if (!(ctx->synchro.status & NTP_SYNC) rtp_request_timing(ctx);
 					LOG_WARN("[%p]: discarding NTP roundtrip of %u ms", ctx, roundtrip);
 					break;
 				}