[Freeswitch-trunk] [commit] r6859 - freeswitch/trunk/src/mod/endpoints/mod_sofia
Freeswitch SVN
mikej at freeswitch.org
Tue Dec 18 00:35:46 EST 2007
Author: mikej
Date: Tue Dec 18 00:35:46 2007
New Revision: 6859
Modified:
freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
Log:
don't deref NULL.
Modified: freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c
==============================================================================
--- freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c (original)
+++ freeswitch/trunk/src/mod/endpoints/mod_sofia/sofia.c Tue Dec 18 00:35:46 2007
@@ -1150,9 +1150,20 @@
{
- if (session && (status == 180 || status == 183 || status == 200)) {
+ if (sip && session && (status == 180 || status == 183 || status == 200)) {
switch_channel_t *channel = switch_core_session_get_channel(session);
const char *astate = "early";
+ url_t *from = NULL, *to = NULL, *contact = NULL;
+
+ if (sip->sip_to) {
+ to = sip->sip_to->a_url;
+ }
+ if (sip->sip_from) {
+ from = sip->sip_from->a_url;
+ }
+ if (sip->sip_contact) {
+ contact = sip->sip_contact->m_url;
+ }
if (status == 200) {
astate = "confirmed";
@@ -1160,15 +1171,32 @@
if (!switch_channel_test_flag(channel, CF_EARLY_MEDIA) && !switch_channel_test_flag(channel, CF_ANSWERED) &&
!switch_channel_test_flag(channel, CF_RING_READY)) {
- const char *from_user = switch_str_nil(sip->sip_to->a_url->url_user);
- const char *from_host = switch_str_nil(sip->sip_from->a_url->url_host);
- const char *to_user = switch_str_nil(sip->sip_from->a_url->url_user);
- const char *to_host = switch_str_nil(sip->sip_from->a_url->url_host);
- const char *contact_user = switch_str_nil(sip->sip_contact->m_url->url_user);
- const char *contact_host = switch_str_nil(sip->sip_contact->m_url->url_host);
- const char *user_agent = switch_str_nil(sip->sip_user_agent->g_string);
- const char *call_id = switch_str_nil(sip->sip_call_id->i_id);
- char *sql = NULL;
+ const char *from_user = "", *from_host = "", *to_user = "", *to_host = "", *contact_user = "", *contact_host = "";
+ const char *user_agent = "", *call_id = "";
+ char *sql = NULL;
+
+ if (sip->sip_user_agent) {
+ user_agent = switch_str_nil(sip->sip_user_agent->g_string);
+ }
+
+ if (sip->sip_call_id) {
+ call_id = switch_str_nil(sip->sip_call_id->i_id);
+ }
+
+ if (to) {
+ from_user = switch_str_nil(to->url_user);
+ }
+
+ if (from) {
+ from_host = switch_str_nil(from->url_host);
+ to_user = switch_str_nil(from->url_user);
+ to_host = switch_str_nil(from->url_host);
+ }
+
+ if (contact) {
+ contact_user = switch_str_nil(contact->url_user);
+ contact_host = switch_str_nil(contact->url_host);
+ }
sql = switch_mprintf(
"insert into sip_dialogs values('%q','%q','%q','%q','%q','%q','%q','%q','%q','%q','%q')",
More information about the Freeswitch-trunk
mailing list