From 8c663f8586232d87186298960d51c882930e36fe Mon Sep 17 00:00:00 2001 From: Anthony Minessale Date: Fri, 17 Oct 2008 19:25:00 +0000 Subject: [PATCH] fix ip change detction code for proxy mode git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@10055 d0543943-73ff-0310-b7d9-9358b9ac24b2 --- src/mod/endpoints/mod_sofia/sofia_glue.c | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) diff --git a/src/mod/endpoints/mod_sofia/sofia_glue.c b/src/mod/endpoints/mod_sofia/sofia_glue.c index a8ed8fdf31..4dea741b3e 100644 --- a/src/mod/endpoints/mod_sofia/sofia_glue.c +++ b/src/mod/endpoints/mod_sofia/sofia_glue.c @@ -870,12 +870,18 @@ switch_status_t sofia_glue_tech_proxy_remote_addr(private_object_t *tech_pvt) } } - if (tech_pvt->remote_sdp_audio_ip && !strcmp(tech_pvt->remote_sdp_audio_ip, rip) && atoi(rp) == tech_pvt->remote_sdp_audio_port) { - switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Remote address:port [%s:%d] has not changed.\n", - tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port); - return SWITCH_STATUS_SUCCESS; - } + if (rip && rp && switch_rtp_ready(tech_pvt->rtp_session)) { + char *remote_host = switch_rtp_get_remote_host(tech_pvt->rtp_session); + switch_port_t remote_port = switch_rtp_get_remote_port(tech_pvt->rtp_session), rpi = (switch_port_t) atoi(rp); + if (remote_host && remote_port && !strcmp(remote_host, rip) && remote_port == rpi) { + switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Remote address:port [%s:%d] has not changed.\n", + tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port); + return SWITCH_STATUS_SUCCESS; + } + + } + if (switch_rtp_ready(tech_pvt->rtp_session)) { if (switch_rtp_set_remote_address(tech_pvt->rtp_session, tech_pvt->remote_sdp_audio_ip, tech_pvt->remote_sdp_audio_port, SWITCH_TRUE, &err) != SWITCH_STATUS_SUCCESS) {