]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
add sip info to event_socket gateway
authorAnthony Minessale <anthony.minessale@gmail.com>
Mon, 20 Apr 2009 19:00:39 +0000 (19:00 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Mon, 20 Apr 2009 19:00:39 +0000 (19:00 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@13088 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/sofia.c

index df65ce3da1008ba12c9a98a3c5a2310ddd5dc156..fee6a366d0a97f34df20ee6681f32fd72dd38111 100644 (file)
@@ -2899,7 +2899,6 @@ static void general_event_handler(switch_event_t *event)
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Can't find profile %s\n", profile_name);
                                return;
                        }
-
                        
                        nh = nua_handle(profile->nua, 
                                                        NULL, 
@@ -2909,7 +2908,10 @@ static void general_event_handler(switch_event_t *event)
                                                        SIPTAG_CONTACT_STR(profile->url), 
                                                        TAG_END());
                        
+                       nua_handle_bind(nh, &mod_sofia_globals.destroy_private);
+
                        nua_info(nh,
+                                        NUTAG_WITH_THIS(profile->nua),
                                         TAG_IF(ct, SIPTAG_CONTENT_TYPE_STR(ct)), 
                                         TAG_IF(!switch_strlen_zero(body), SIPTAG_PAYLOAD_STR(body)),
                                         TAG_END());
index 306d5c058ff10a917724d6b7c65cd288d6f69b8f..b1a0da0d92eff32b65e2ded1d7a49ac9be9b6f7c 100644 (file)
@@ -3900,7 +3900,7 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                                        }
                                } else {
                                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Bad signal\n");
-                                       goto fail;
+                                       goto end;
                                }
 
                                if ((signal_ptr = switch_stristr("Duration=", sip->sip_payload->pl_data))) {
@@ -3916,7 +3916,7 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                                int tmp = atoi(sip->sip_payload->pl_data);
                                dtmf.digit = switch_rfc2833_to_char(tmp);
                        } else {
-                               goto fail;
+                               goto end;
                        }
 
                        if (dtmf.digit) {
@@ -3944,11 +3944,8 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
 
                                /* Send 200 OK response */
                                nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());
-
-                               goto end;
-                       } else {
-                               goto fail;
                        }
+                       goto end;
                }
 
                if ((clientcode_header = sofia_glue_get_unknown_header(sip, "x-clientcode"))) {
@@ -3956,8 +3953,6 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                                switch_channel_set_variable(channel, "call_clientcode", clientcode_header);
                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_NOTICE, "Setting CMC to %s\n", clientcode_header);
                                nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());
-                       } else {
-                               goto fail;
                        }
                        goto end;
                }
@@ -3991,15 +3986,8 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                                        }
                                }
                        }
-                       goto end;
                }
        }
-       goto end;
-
-  fail:
-
-       /* *shrug* just ok it */
-       nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());
 
  end:
 
@@ -4041,7 +4029,7 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                        }
                }
 
-               if (sip->sip_payload->pl_data) {
+               if (sip->sip_payload && sip->sip_payload->pl_data) {
                        switch_event_add_body(event, "%s", sip->sip_payload->pl_data);
                }
 
@@ -4049,6 +4037,8 @@ void sofia_handle_sip_i_info(nua_t *nua, sofia_profile_t *profile, nua_handle_t
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "dispatched freeswitch event for INFO\n");
        }
 
+       nua_respond(nh, SIP_200_OK, NUTAG_WITH_THIS(nua), TAG_END());
+
        return;
 
 }