Revision
14373
Author
brian
Date
2009-07-27 09:31:47 -0500 (Mon, 27 Jul 2009)

Log Message

 FSCORE-405 

Modified Paths

Diff

Modified: freeswitch/trunk/src/switch_nat.c (14372 => 14373)


--- freeswitch/trunk/src/switch_nat.c	2009-07-27 13:12:12 UTC (rev 14372)
+++ freeswitch/trunk/src/switch_nat.c	2009-07-27 14:31:47 UTC (rev 14373)
@@ -231,6 +231,7 @@
 {
 	char *buf = NULL;
 	char newip[16];
+	char *pos;
 	switch_event_t *event = NULL;
 	
 	switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "NAT thread started\n");
@@ -259,17 +260,23 @@
 		if (nat_globals.nat_type == SWITCH_NAT_TYPE_UPNP) {
 			/* look for our desc URL and servicetype in the packet */
 			if (strstr(buf, nat_globals.descURL) && (buf == NULL || strstr(buf, nat_globals.data.servicetype))) {
-				if (strstr(buf, "NTS: ssdp:alive")) {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP keep alive packet: \n%s\n", buf);
-					/* did pub ip change */
-					if (get_upnp_pubaddr(newip) != SWITCH_STATUS_SUCCESS) {
-						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unable to get current pubaddr after receiving UPnP keep alive packet.\n");
+				if ((pos = strstr(buf, "NTS:"))) {
+					pos = pos + 4;
+					while(*pos && *pos == ' ') {
+						pos++;
 					}
-				} else if (strstr(buf, "NTS: ssdp:byebye")) {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "got UPnP signoff packet.  Your NAT gateway is probably going offline.\n");
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP signoff packet: \n%s\n", buf);
-				} else {
-					switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UNKNOWN UPnP keep alive packet: \n%s\n", buf);
+					if (!strncmp(pos, "ssdp:alive", 10)) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP keep alive packet: \n%s\n", buf);
+						/* did pub ip change */
+						if (get_upnp_pubaddr(newip) != SWITCH_STATUS_SUCCESS) {
+							switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unable to get current pubaddr after receiving UPnP keep alive packet.\n");
+						}
+					} else if (!strncmp(pos, "ssdp:byebye", 11)) {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "got UPnP signoff packet.  Your NAT gateway is probably going offline.\n");
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UPnP signoff packet: \n%s\n", buf);
+					} else {
+						switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "got UNKNOWN UPnP keep alive packet: \n%s\n", buf);
+					}
 				}
 			}
 		} else {