diff --git a/daemon/media_socket.c b/daemon/media_socket.c index 7a0388262..9abc39bd2 100644 --- a/daemon/media_socket.c +++ b/daemon/media_socket.c @@ -2522,9 +2522,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 3f4afe6a1..72d979128 100644 --- a/include/call.h +++ b/include/call.h @@ -435,7 +435,7 @@ struct packet_stream { sink_handler_q 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 */