From 0c1367c11d397341b9932ffa9b31c50fcce1eb89 Mon Sep 17 00:00:00 2001
From: Anthony Minessale <anthony.minessale@gmail.com>
Date: Fri, 18 Jan 2008 00:10:23 +0000
Subject: [PATCH] refactor

git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@7277 d0543943-73ff-0310-b7d9-9358b9ac24b2
---
 src/mod/endpoints/mod_sofia/sofia.c | 2 +-
 src/switch_rtp.c                    | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c
index 1293458902..1d302ef31c 100644
--- a/src/mod/endpoints/mod_sofia/sofia.c
+++ b/src/mod/endpoints/mod_sofia/sofia.c
@@ -2453,7 +2453,7 @@ void sofia_handle_sip_i_invite(nua_t *nua, sofia_profile_t *profile, nua_handle_
 			} else {
 				const char *url = (sofia_glue_transport_has_tls(transport)) ? profile->tls_url : profile->url;
 
-				if (strchr(url, '>')) {
+				if (url && strchr(url, '>')) {
 					tech_pvt->reply_contact = switch_core_session_sprintf(session, "%s;transport=%s", url, sofia_glue_transport2str(transport));
 				} else {
 					tech_pvt->reply_contact = switch_core_session_sprintf(session, "<%s;transport=%s>", url, sofia_glue_transport2str(transport));
diff --git a/src/switch_rtp.c b/src/switch_rtp.c
index f1f4958730..7963be03a0 100644
--- a/src/switch_rtp.c
+++ b/src/switch_rtp.c
@@ -770,6 +770,7 @@ SWITCH_DECLARE(uint8_t) switch_rtp_ready(switch_rtp_t *rtp_session)
 SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session)
 {
 	void *pop;
+	switch_socket_t *sock;
 
 	if (!switch_rtp_ready(*rtp_session)) {
 		return;
@@ -792,8 +793,10 @@ SWITCH_DECLARE(void) switch_rtp_destroy(switch_rtp_t **rtp_session)
 	}
 
 	switch_rtp_kill_socket(*rtp_session);
-	switch_socket_close((*rtp_session)->sock);
+	sock = (*rtp_session)->sock;
 	(*rtp_session)->sock = NULL;
+	switch_socket_close(sock);
+
 
 
 	if (switch_test_flag((*rtp_session), SWITCH_RTP_FLAG_VAD)) {
@@ -1088,7 +1091,9 @@ static int rtp_common_read(switch_rtp_t *rtp_session, switch_payload_t *payload_
 				switch_frame_flag_t frame_flags = SFF_NONE;
 				data[0] = 65;
 				rtp_session->cn++;
+				switch_mutex_lock(rtp_session->flag_mutex);
 				rtp_common_write(rtp_session, NULL, (void *) data, 2, rtp_session->cng_pt, 0, &frame_flags);
+				switch_mutex_unlock(rtp_session->flag_mutex);
 			}
 		}
 
@@ -1601,7 +1606,7 @@ static int rtp_common_write(switch_rtp_t *rtp_session,
 
 	this_ts = ntohl(send_msg->header.ts);
 
-	if (rtp_session->sending_dtmf || !this_ts) {
+	if (!switch_rtp_ready(rtp_session) || rtp_session->sending_dtmf || !this_ts) {
 		send = 0;
 	}