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 */