]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
make xtra_params arg instead of just profile name
authorAnthony Minessale <anthony.minessale@gmail.com>
Wed, 10 Oct 2007 23:38:48 +0000 (23:38 +0000)
committerAnthony Minessale <anthony.minessale@gmail.com>
Wed, 10 Oct 2007 23:38:48 +0000 (23:38 +0000)
git-svn-id: http://svn.freeswitch.org/svn/freeswitch/trunk@5838 d0543943-73ff-0310-b7d9-9358b9ac24b2

src/include/switch_xml.h
src/mod/endpoints/mod_sofia/sofia_reg.c
src/switch_xml.c

index 060edfb7bcc93e39173c84158e20a1e8fcc66173..74d0523b59098dc25088c140a5e5f02e9dbec384 100644 (file)
@@ -324,7 +324,7 @@ SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(char *user_name, char *do
                                                                                                           switch_xml_t *root,
                                                                                                           switch_xml_t *domain,
                                                                                                           switch_xml_t *user,
-                                                                                                          char *profile_name);
+                                                                                                          char *xtra_params);
 
 ///\brief open a config in the core registry
 ///\param file_path the name of the config section e.g. modules.conf
index 60c8af3dc5e13da0382a3fb44fc3d3b180e6eaa0..6673443560ee7a23bf856f9d3d3d270250b8326a 100644 (file)
@@ -749,7 +749,7 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile, sip_authorization_t co
        char *sql;
        switch_xml_t domain, xml = NULL, user, param, xparams;  
        char hexdigest[2 * SU_MD5_DIGEST_SIZE + 1] = "";
-       
+       char *pbuf = NULL;
        username = realm = nonce = uri = qop = cnonce = nc = response = NULL;
        
        if (authorization->au_params) {
@@ -816,7 +816,9 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile, sip_authorization_t co
                free(sql);
        } 
        
-       if (switch_xml_locate_user(username, realm, ip, &xml, &domain, &user, profile->name) != SWITCH_STATUS_SUCCESS) {
+       pbuf = switch_mprintf("profile=%s", profile->name);
+
+       if (switch_xml_locate_user(username, realm, ip, &xml, &domain, &user, pbuf) != SWITCH_STATUS_SUCCESS) {
                switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", username, realm);
                ret = AUTH_FORBIDDEN;
                goto end;
@@ -964,6 +966,7 @@ auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile, sip_authorization_t co
        if (xml) {
                switch_xml_free(xml);
        }
+       switch_safe_free(pbuf);
        switch_safe_free(input);
        switch_safe_free(input2);
        switch_safe_free(username);
index 24f4378c8de0e7c51e8d14e243524bef3f907530..e4179188951d7cb98c92f9339cc48041fa89e181 100644 (file)
@@ -1246,7 +1246,7 @@ SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(char *user_name, char *do
                                                                                                           switch_xml_t *root,
                                                                                                           switch_xml_t *domain,
                                                                                                           switch_xml_t *user,
-                                                                                                          char *profile_name)
+                                                                                                          char *xtra_params)
 {
        char params[1024] = "";
        switch_status_t status;
@@ -1254,7 +1254,13 @@ SWITCH_DECLARE(switch_status_t) switch_xml_locate_user(char *user_name, char *do
        *user = NULL;
        *domain = NULL;
        
-       snprintf(params, sizeof(params), "user=%s&domain=%s&ip=%s&profile=%s", switch_str_nil(user_name), switch_str_nil(domain_name), switch_str_nil(ip), profile_name);
+       if (!switch_strlen_zero(xtra_params)) {
+               snprintf(params, sizeof(params), "user=%s&domain=%s&ip=%s&%s", 
+                                switch_str_nil(user_name), switch_str_nil(domain_name), switch_str_nil(ip), xtra_params);
+       } else {
+               snprintf(params, sizeof(params), "user=%s&domain=%s&ip=%s", 
+                                switch_str_nil(user_name), switch_str_nil(domain_name), switch_str_nil(ip));
+       }
        if ((status = switch_xml_locate_domain(domain_name, params, root, domain)) != SWITCH_STATUS_SUCCESS) {
                return status;
        }