From cd8e7e56aaed2e64db1fbd284616ea23b6efb201 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Fri, 2 May 2025 07:23:25 -0400 Subject: [PATCH] MT#62735 fix heuristic learning mode Change-Id: I2bfd09eefaf6a13f1c7435efa2e07c9ccecfa964 (cherry picked from commit 9068638a4d3db659f049249c6a8cc28c23d32b2e) --- daemon/media_socket.c | 5 +++-- include/call.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/daemon/media_socket.c b/daemon/media_socket.c index d8057a8f9..7a8cf43a8 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -2501,9 +2501,10 @@ static bool media_packet_address_check(struct packet_handler_ctx *phc) && phc->mp.stream->advertised_endpoint.port) { // check if we need to reset our learned endpoints - if (memcmp(&rtpe_now, &phc->mp.stream->ep_detect_signal, sizeof(rtpe_now))) { + + if ((phc->mp.call->last_signal - phc->mp.stream->ep_detect_signal) != 0) { memset(&phc->mp.stream->detected_endpoints, 0, sizeof(phc->mp.stream->detected_endpoints)); - phc->mp.stream->ep_detect_signal = rtpe_now; + phc->mp.stream->ep_detect_signal = phc->mp.call->last_signal; } // possible endpoints that can be detected in order of preference: diff --git a/include/call.h b/include/call.h index db05823b6..e2c966dd8 100644 --- a/include/call.h +++ b/include/call.h @@ -390,7 +390,7 @@ struct packet_stream { GQueue rtp_mirrors; /* LOCK: call->master_lock, in_lock for streamhandler */ struct endpoint endpoint; /* LOCK: out_lock */ struct endpoint detected_endpoints[4]; /* LOCK: out_lock */ - struct timeval ep_detect_signal; /* LOCK: out_lock */ + time_t ep_detect_signal; /* LOCK: out_lock */ struct endpoint advertised_endpoint; /* RO */ struct endpoint learned_endpoint; /* LOCK: out_lock */ struct crypto_context crypto; /* OUT direction, LOCK: out_lock */