[Freeswitch-svn] [commit] r7834 - in freeswitch/trunk/src: . mod/endpoints/mod_sofia

Freeswitch SVN anthm at freeswitch.org
Fri Mar 7 15:13:40 EST 2008


Author: anthm
Date: Fri Mar  7 15:13:40 2008
New Revision: 7834

Modified:
   freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
   freeswitch/trunk/src/switch_rtp.c

Log:
late neg + video issues

Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	(original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia_glue.c	Fri Mar  7 15:13:40 2008
@@ -532,6 +532,7 @@
 		return SWITCH_STATUS_FALSE;
 	}
 	sdp_port = tech_pvt->local_sdp_video_port;
+	
 
 	if (tech_pvt->profile->extrtpip) {
 		if (sofia_glue_ext_address_lookup(&ip, &sdp_port, tech_pvt->profile->extrtpip, switch_core_session_get_pool(tech_pvt->session)) !=
@@ -1633,6 +1634,10 @@
 
 		sofia_glue_check_video_codecs(tech_pvt);
 
+		if (!tech_pvt->local_sdp_video_port) {
+			sofia_glue_tech_choose_video_port(tech_pvt);
+		}
+		
 		if (switch_test_flag(tech_pvt, TFLAG_VIDEO) && tech_pvt->video_rm_encoding) {
 			flags = (switch_rtp_flag_t) (SWITCH_RTP_FLAG_USE_TIMER | SWITCH_RTP_FLAG_AUTOADJ | 
 										 SWITCH_RTP_FLAG_DATAWAIT | SWITCH_RTP_FLAG_NOBLOCK | SWITCH_RTP_FLAG_RAW_WRITE);
@@ -1662,10 +1667,14 @@
 
 			if (switch_rtp_ready(tech_pvt->video_rtp_session)) {
 				switch_channel_set_flag(tech_pvt->channel, CF_VIDEO);
+			} else {
+				switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "VIDEO RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
+				switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
+				goto end;
 			}
 		}
 	} else {
-		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
+		switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "AUDIO RTP REPORTS ERROR: [%s]\n", switch_str_nil(err));
 		switch_channel_hangup(tech_pvt->channel, SWITCH_CAUSE_DESTINATION_OUT_OF_ORDER);
 		switch_clear_flag_locked(tech_pvt, TFLAG_IO);
 		status = SWITCH_STATUS_FALSE;

Modified: freeswitch/trunk/src/switch_rtp.c
==============================================================================
--- freeswitch/trunk/src/switch_rtp.c	(original)
+++ freeswitch/trunk/src/switch_rtp.c	Fri Mar  7 15:13:40 2008
@@ -428,6 +428,11 @@
 
 	*err = NULL;
 
+	if (switch_strlen_zero(host) || !port) {
+		*err = "Address Error";
+		goto done;
+	}
+
 	if (switch_sockaddr_info_get(&rtp_session->local_addr, host, SWITCH_UNSPEC, port, 0, rtp_session->pool) != SWITCH_STATUS_SUCCESS) {
 		*err = "Local Address Error!";
 		goto done;
@@ -468,17 +473,13 @@
 			break;
 		}
 
-		if (++x > 500) {
+		if (++x > 1000) {
 			break;
 		}
 		switch_yield(1000);
 	}
 	switch_socket_opt_set(new_sock, SWITCH_SO_NONBLOCK, FALSE);
 
-	if (!ilen) {
-		*err = "Send myself a packet failed!";
-		goto done;
-	}
 #endif
 
 	old_sock = rtp_session->sock;
@@ -740,13 +741,28 @@
 											  switch_memory_pool_t *pool)
 {
 	switch_rtp_t *rtp_session = NULL;
-	
-	if (switch_rtp_create(&rtp_session, payload, samples_per_interval, ms_per_packet, flags, timer_name, err, pool) != SWITCH_STATUS_SUCCESS) {
+
+	if (switch_strlen_zero(rx_host)) {
+		*err = "Missing local host";
+		goto end;
+	}
+
+	if (!rx_port) {
+		*err = "Missing local port";
+		goto end;
+	}
+
+	if (switch_strlen_zero(tx_host)) {
+		*err = "Missing remote host";
+		goto end;
+	}
+
+	if (!tx_port) {
+		*err = "Missing local port";
 		goto end;
 	}
 	
-	if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) {
-		rtp_session = NULL;
+	if (switch_rtp_create(&rtp_session, payload, samples_per_interval, ms_per_packet, flags, timer_name, err, pool) != SWITCH_STATUS_SUCCESS) {
 		goto end;
 	}
 	
@@ -754,6 +770,11 @@
 		rtp_session = NULL;
 	}
 
+	if (switch_rtp_set_remote_address(rtp_session, tx_host, tx_port, err) != SWITCH_STATUS_SUCCESS) {
+		rtp_session = NULL;
+		goto end;
+	}
+	
  end:
 
 	if (rtp_session) {



More information about the Freeswitch-svn mailing list