]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
update
authorAnthony Minessale <anthony.minessale@gmail.com>
Thu, 4 May 2006 15:37:06 +0000 (15:37 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Thu, 4 May 2006 15:37:06 +0000 (15:37 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@1345 d0543943-73ff-0310-b7d9-9358b9ac24b2

libs/libdingaling/src/libdingaling.c
src/mod/endpoints/mod_dingaling/mod_dingaling.c

index 074f18696e647a26b591dfca02d85c83a94f4360..19f174d4d73d6ae18040defcf9493697eef58986 100644 (file)
@@ -318,10 +318,14 @@ static ldl_status parse_session_code(ldl_handle_t *handle, char *id, char *from,
                                tag = iks_child (xml);
                                
                                while(tag) {
-                                       if (!strcasecmp(type, "info_element")) {
+                                       if (!strcasecmp(iks_name(tag), "info_element")) {
                                                char *name = iks_find_attrib(tag, "name");
                                                char *value = iks_find_attrib(tag, "value");
+                                               if (globals.debug) {
+                                                       globals.logger(DL_LOG_DEBUG, "Info Element [%s]=[%s]\n", name, value);
+                                               }
                                                ldl_session_set_value(session, name, value);
+                                               
                                        } else if (!strcasecmp(iks_name(tag), "candidate") && session->candidate_len < LDL_MAX_CANDIDATES) {
                                                char *key;
                                                double pref = 0.0;
index 290d21ab735bc4b181c9b0878d1f81ba87a9c4c0..f59d2d889c32396c8fee619b95340940588ecc3b 100644 (file)
@@ -1523,11 +1523,6 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
                        return LDL_STATUS_FALSE;
                }
                if ((session = switch_core_session_request(&channel_endpoint_interface, NULL)) != 0) {
-                       char *exten;
-                       char *context;
-                       char *cid_name;
-                       char *cid_num;
-
                        switch_core_session_add_stream(session, NULL);
                        if ((tech_pvt = (struct private_object *) switch_core_session_alloc(session, sizeof(struct private_object))) != 0) {
                                memset(tech_pvt, 0, sizeof(*tech_pvt));
@@ -1547,43 +1542,8 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
                                return LDL_STATUS_FALSE;
                        }
 
-                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating a session for %s\n", ldl_session_get_id(dlsession));
-               
-                       if (!(exten = ldl_session_get_value(dlsession, "dnis"))) {
-                               exten = profile->exten;
-                       }
-                       
-                       if (!(context = ldl_session_get_value(dlsession, "context"))) {
-                               context = profile->context;
-                       }
-
-                       if (!(cid_name = ldl_session_get_value(dlsession, "caller_id_name"))) {
-                               cid_name = tech_pvt->recip;
-                       }
 
-                       if (!(cid_num = ldl_session_get_value(dlsession, "caller_id_number"))) {
-                               cid_num = tech_pvt->recip;
-                       }
-                       
-                       if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
-                                                                                                                                         profile->dialplan,
-                                                                                                                                         cid_name,
-                                                                                                                                         cid_num,
-                                                                                                                                         ldl_session_get_ip(dlsession),
-                                                                                                                                         ldl_session_get_value(dlsession, "ani"),
-                                                                                                                                         ldl_session_get_value(dlsession, "ani2"),
-                                                                                                                                         ldl_session_get_value(dlsession, "rdnis"),
-                                                                                                                                         (char *)modname,
-                                                                                                                                         context,
-                                                                                                                                         exten)) != 0) {
-                               char name[128];
-                               snprintf(name, sizeof(name), "DingaLing/%s-%04x", tech_pvt->caller_profile->destination_number,
-                                                rand() & 0xffff);
-                               switch_channel_set_name(channel, name);
-                               switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
-
-                       }
-               
+                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating a session for %s\n", ldl_session_get_id(dlsession));
                        ldl_session_set_private(dlsession, session);
                        tech_pvt->dlsession = dlsession;
                        negotiate_thread_launch(session);
@@ -1711,10 +1671,55 @@ static ldl_status handle_signalling(ldl_handle_t *handle, ldl_session_t *dlsessi
                                                  strncasecmp(candidates[x].address, "172.31.", 7)
                                                  ))) {
                                                ldl_payload_t payloads[5];
+                                               char *exten;
+                                               char *context;
+                                               char *cid_name;
+                                               char *cid_num;
 
                                                memset(payloads, 0, sizeof(payloads));
 
                                                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Acceptable Candidate %s:%d\n", candidates[x].address, candidates[x].port);
+
+
+
+                                               if (!(exten = ldl_session_get_value(dlsession, "dnis"))) {
+                                                       exten = profile->exten;
+                                               }
+                       
+                                               if (!(context = ldl_session_get_value(dlsession, "context"))) {
+                                                       context = profile->context;
+                                               }
+
+                                               if (!(cid_name = ldl_session_get_value(dlsession, "caller_id_name"))) {
+                                                       cid_name = tech_pvt->recip;
+                                               }
+
+                                               if (!(cid_num = ldl_session_get_value(dlsession, "caller_id_number"))) {
+                                                       cid_num = tech_pvt->recip;
+                                               }
+                       
+                                               if (!tech_pvt->caller_profile) {
+                                                       switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Creating an identity for %s %s <%s> %s\n", 
+                                                                                         ldl_session_get_id(dlsession), cid_name, cid_num, exten);
+                       
+                                                       if ((tech_pvt->caller_profile = switch_caller_profile_new(switch_core_session_get_pool(session),
+                                                                                                                                                                         profile->dialplan,
+                                                                                                                                                                         cid_name,
+                                                                                                                                                                         cid_num,
+                                                                                                                                                                         ldl_session_get_ip(dlsession),
+                                                                                                                                                                         ldl_session_get_value(dlsession, "ani"),
+                                                                                                                                                                         ldl_session_get_value(dlsession, "ani2"),
+                                                                                                                                                                         ldl_session_get_value(dlsession, "rdnis"),
+                                                                                                                                                                         (char *)modname,
+                                                                                                                                                                         context,
+                                                                                                                                                                         exten)) != 0) {
+                                                               char name[128];
+                                                               snprintf(name, sizeof(name), "DingaLing/%s-%04x", tech_pvt->caller_profile->destination_number, rand() & 0xffff);
+                                                               switch_channel_set_name(channel, name);
+                                                               switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
+                                                       }
+                                               }
+
                                                if (lanaddr) {
                                                        switch_set_flag(tech_pvt, TFLAG_LANADDR);
                                                }