Revision
16474
Author
anthm
Date
2010-01-22 21:59:01 -0600 (Fri, 22 Jan 2010)

Log Message

tweak

Modified Paths

Diff

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c (16473 => 16474)


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	2010-01-22 23:37:50 UTC (rev 16473)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/mod_sofia.c	2010-01-23 03:59:01 UTC (rev 16474)
@@ -1403,40 +1403,41 @@
 
 	case SWITCH_MESSAGE_INDICATE_MEDIA:
 		{
-			uint32_t send_invite = 1;
+            uint32_t send_invite = 1;
 
+			switch_channel_clear_flag(channel, CF_PROXY_MODE);
 			sofia_glue_tech_set_local_sdp(tech_pvt, NULL, SWITCH_FALSE);
 
-			if (!(switch_channel_test_flag(channel, CF_ANSWERED) || switch_channel_test_flag(channel, CF_EARLY_MEDIA))) {
-				if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
-					const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
-					tech_pvt->num_codecs = 0;
+            if (!(switch_channel_test_flag(channel, CF_ANSWERED) || switch_channel_test_flag(channel, CF_EARLY_MEDIA))) {
+                if (!switch_channel_test_flag(tech_pvt->channel, CF_OUTBOUND)) {
+                    const char *r_sdp = switch_channel_get_variable(channel, SWITCH_R_SDP_VARIABLE);
+
+                    tech_pvt->num_codecs = 0;
 					sofia_glue_tech_prepare_codecs(tech_pvt);
-					if (sofia_glue_tech_media(tech_pvt, r_sdp) != SWITCH_STATUS_SUCCESS) {
+                    if (sofia_glue_tech_media(tech_pvt, r_sdp) != SWITCH_STATUS_SUCCESS) {
 						switch_channel_set_variable(channel, SWITCH_ENDPOINT_DISPOSITION_VARIABLE, "CODEC NEGOTIATION ERROR");
-						status = SWITCH_STATUS_FALSE;
-						goto end_lock;
-					}
-					send_invite = 0;
-				}
-			}
+                        status = SWITCH_STATUS_FALSE;
+                        goto end_lock;
+                    }
+                    send_invite = 0;
+                }
+            }
 
-			if (!switch_rtp_ready(tech_pvt->rtp_session)) {
+            if (!switch_rtp_ready(tech_pvt->rtp_session)) {
 				sofia_glue_tech_prepare_codecs(tech_pvt);
-				if ((status = sofia_glue_tech_choose_port(tech_pvt, 0)) != SWITCH_STATUS_SUCCESS) {
+                if ((status = sofia_glue_tech_choose_port(tech_pvt, 0)) != SWITCH_STATUS_SUCCESS) {
 					switch_channel_hangup(channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
-					goto end_lock;
-				}
-			}
+                    goto end_lock;
+                }
+            }
 			sofia_glue_set_local_sdp(tech_pvt, NULL, 0, NULL, 1);
 
-			if (send_invite) {
+            if (send_invite) {
 				switch_channel_set_flag(channel, CF_REQ_MEDIA);
-				switch_channel_clear_flag(channel, CF_PROXY_MODE);
 				sofia_glue_do_invite(session);
-			}
-		}
-		break;
+            }
+        }
+        break;
 
 	case SWITCH_MESSAGE_INDICATE_SIMPLIFY:
 		{

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c (16473 => 16474)


--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	2010-01-22 23:37:50 UTC (rev 16473)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	2010-01-23 03:59:01 UTC (rev 16474)
@@ -51,12 +51,22 @@
 		}
 	}
 
+	if (!ip) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "%s NO IP!\n", switch_channel_get_name(tech_pvt->channel));
+		return;
+	}
+
 	if (!port) {
 		if (!(port = tech_pvt->adv_sdp_audio_port)) {
 			port = tech_pvt->proxy_sdp_audio_port;
 		}
 	}
 
+	if (!port) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "%s NO PORT!\n", switch_channel_get_name(tech_pvt->channel));
+		return;
+	}
+
 	if (!tech_pvt->owner_id) {
 		tech_pvt->owner_id = (uint32_t) switch_epoch_time_now(NULL) - port;
 	}
@@ -141,12 +151,23 @@
 			ip = tech_pvt->proxy_sdp_audio_ip;
 		}
 	}
+
+	if (!ip) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "%s NO IP!\n", switch_channel_get_name(tech_pvt->channel));
+		return;
+	}
+
 	if (!port) {
 		if (!(port = tech_pvt->adv_sdp_audio_port)) {
 			port = tech_pvt->proxy_sdp_audio_port;
 		}
 	}
 
+	if (!port) {
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "%s NO PORT!\n", switch_channel_get_name(tech_pvt->channel));
+		return;
+	}
+
 	if (!sr) {
 		sr = "sendrecv";
 	}