]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-5621
authorAnthony Minessale <anthm@freeswitch.org>
Sat, 20 Jul 2013 19:06:34 +0000 (14:06 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Sat, 20 Jul 2013 19:07:01 +0000 (14:07 -0500)
src/mod/endpoints/mod_sofia/sofia.c
src/switch_xml.c

index 55847d19bf8893dd02149dece1ddb40b5a07a5b9..276c87a858e31a1bc344d288ac6df5e7a17fbd69 100644 (file)
@@ -8095,13 +8095,19 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia
        switch_channel_set_caller_profile(channel, tech_pvt->caller_profile);
 
        if (x_user) {
-               const char *user = NULL, *domain = NULL;
+               const char *ruser = NULL, *rdomain = NULL, *user = switch_xml_attr(x_user, "id"), *domain = switch_xml_attr(x_user, "domain-name");
 
                if (v_event) {
-                       user = switch_event_get_header(v_event, "username");
-                       domain = switch_event_get_header(v_event, "domain_name");
+                       ruser = switch_event_get_header(v_event, "username");
+                       rdomain = switch_event_get_header(v_event, "domain_name");
+                       
+                       switch_channel_set_variable(channel, "requested_user_name", ruser);
+                       switch_channel_set_variable(channel, "requested_domain_name", rdomain);
                }
 
+               if (!user) user = ruser;
+               if (!domain) domain = rdomain;
+               
                switch_ivr_set_user_xml(session, NULL, user, domain, x_user);
                switch_xml_free(x_user);
                x_user = NULL;
index 369f88e2c1975f5666c8fc6d21fcbbade9881d81..fcb98dcb74272f75fd8232e699c3c25cc3395822 100644 (file)
@@ -1916,6 +1916,7 @@ static void do_merge(switch_xml_t in, switch_xml_t src, const char *container, c
 
 SWITCH_DECLARE(void) switch_xml_merge_user(switch_xml_t user, switch_xml_t domain, switch_xml_t group)
 {
+       const char *domain_name = switch_xml_attr(domain, "name");
 
        do_merge(user, group, "params", "param");
        do_merge(user, group, "variables", "variable");
@@ -1923,6 +1924,10 @@ SWITCH_DECLARE(void) switch_xml_merge_user(switch_xml_t user, switch_xml_t domai
        do_merge(user, domain, "params", "param");
        do_merge(user, domain, "variables", "variable");
        do_merge(user, domain, "profile-variables", "variable");
+
+       if (!zstr(domain_name)) {
+               switch_xml_set_attr_d(user, "domain-name", domain_name);
+       }
 }
 
 SWITCH_DECLARE(uint32_t) switch_xml_clear_user_cache(const char *key, const char *user_name, const char *domain_name)