From 10b1bd4a7926fc60e6f296c082504e0ec12c1a4d Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Wed, 13 Dec 2006 22:18:27 +0000
Subject: [PATCH] improve nat support

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@3639 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/switch_rtp.c | 17 +++++++----------
 1 file changed, 7 insertions(+), 10 deletions(-)

diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index 6edf270978..43b462e748 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -865,18 +865,15 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
 
 		if (rtp_session->recv_msg.header.version) {
 			if (switch_test_flag(rtp_session, SWITCH_RTP_FLAG_AUTOADJ) && rtp_session->from_addr->port) {
-				if ((rtp_session->from_addr->port != rtp_session->remote_port)) {
+                char *tx_host;
+                char *old_host;
+                char bufa[30], bufb[30];
+                tx_host = switch_get_addr(bufa, sizeof(bufa), rtp_session->from_addr);
+                old_host = switch_get_addr(bufb, sizeof(bufb), rtp_session->remote_addr);
+
+				if ((rtp_session->from_addr->port != rtp_session->remote_port) || strcmp(tx_host, old_host)) {
 					const char *err;
-					char *tx_host;
 					uint32_t old = rtp_session->remote_port;
-					char *old_host;
-					char bufa[30], bufb[30];
-
-					//switch_sockaddr_ip_get(&tx_host, rtp_session->from_addr);
-					//switch_sockaddr_ip_get(&old_host, rtp_session->remote_addr);
-
-					tx_host = switch_get_addr(bufa, sizeof(bufa), rtp_session->from_addr);
-					old_host = switch_get_addr(bufb, sizeof(bufb), rtp_session->remote_addr);
 
 					if (!switch_strlen_zero(tx_host) && rtp_session->from_addr->port > 0) {
 						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Auto Changing port from %s:%u to %s:%u\n",