]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-3385 --resolve
authorAnthony Minessale <anthm@freeswitch.org>
Thu, 30 Jun 2011 16:59:58 +0000 (11:59 -0500)
committerAnthony Minessale <anthm@freeswitch.org>
Thu, 30 Jun 2011 16:59:58 +0000 (11:59 -0500)
src/mod/endpoints/mod_sofia/mod_sofia.c
src/mod/endpoints/mod_sofia/mod_sofia.h
src/mod/endpoints/mod_sofia/sofia_reg.c

index 5d594094b9309654308343d1da63cf219a0709f7..a904aa17ef2582f39d800a7e28a56dc7133ce3eb 100644 (file)
@@ -2180,7 +2180,7 @@ static switch_status_t sofia_receive_message(switch_core_session_t *session, swi
                                        to_host = switch_channel_get_variable(channel, "sip_to_host");
                                }
                                switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_DEBUG, "Challenging call %s\n", to_uri);
-                               sofia_reg_auth_challenge(NULL, tech_pvt->profile, tech_pvt->nh, NULL, REG_INVITE, to_host, 0);
+                               sofia_reg_auth_challenge(tech_pvt->profile, tech_pvt->nh, NULL, REG_INVITE, to_host, 0);
                                switch_channel_hangup(channel, SWITCH_CAUSE_USER_CHALLENGE);
                        } else if (code == 484 && msg->numeric_arg) {
                                const char *to = switch_channel_get_variable(channel, "sip_to_uri");
index 304d559f57da39f2c417b44d9ed4e6444be96542..c6b84eef947832289576e200347c4a0983cf6727 100644 (file)
@@ -880,7 +880,7 @@ void sofia_presence_mwi_event_handler(switch_event_t *event);
 void sofia_glue_track_event_handler(switch_event_t *event);
 void sofia_presence_cancel(void);
 switch_status_t config_sofia(int reload, char *profile_name);
-void sofia_reg_auth_challenge(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_dispatch_event_t *de,
+void sofia_reg_auth_challenge(sofia_profile_t *profile, nua_handle_t *nh, sofia_dispatch_event_t *de,
                                                          sofia_regtype_t regtype, const char *realm, int stale);
 auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile, sip_authorization_t const *authorization,
                                                                sip_t const *sip,
index 5fb5089d665ed494c3b978db81e5e0f724bb3484..88c5dd4ec6515bd767bac7a796eb452adcc80fb4 100644 (file)
@@ -875,12 +875,18 @@ switch_console_callback_match_t *sofia_reg_find_reg_url_multi(sofia_profile_t *p
 }
 
 
-void sofia_reg_auth_challenge(nua_t *nua, sofia_profile_t *profile, nua_handle_t *nh, sofia_dispatch_event_t *de,
+void sofia_reg_auth_challenge(sofia_profile_t *profile, nua_handle_t *nh, sofia_dispatch_event_t *de,
                                                          sofia_regtype_t regtype, const char *realm, int stale)
 {
        switch_uuid_t uuid;
        char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
        char *sql, *auth_str;
+       msg_t *msg = NULL;
+
+
+       if (de && de->data) {
+               msg = de->data->e_msg;
+       }
 
        switch_uuid_get(&uuid);
        switch_uuid_format(uuid_str, &uuid);
@@ -896,9 +902,11 @@ void sofia_reg_auth_challenge(nua_t *nua, sofia_profile_t *profile, nua_handle_t
        auth_str = switch_mprintf("Digest realm=\"%q\", nonce=\"%q\",%s algorithm=MD5, qop=\"auth\"", realm, uuid_str, stale ? " stale=true," : "");
 
        if (regtype == REG_REGISTER) {
-               nua_respond(nh, SIP_401_UNAUTHORIZED, TAG_IF((nua && de), NUTAG_WITH_THIS_MSG(de->data->e_msg)), SIPTAG_WWW_AUTHENTICATE_STR(auth_str), TAG_END());
+               nua_respond(nh, SIP_401_UNAUTHORIZED, TAG_IF(msg, NUTAG_WITH_THIS_MSG(msg)), SIPTAG_WWW_AUTHENTICATE_STR(auth_str), TAG_END());
        } else if (regtype == REG_INVITE) {
-               nua_respond(nh, SIP_407_PROXY_AUTH_REQUIRED, TAG_IF((nua && de), NUTAG_WITH_THIS_MSG(de->data->e_msg)), SIPTAG_PROXY_AUTHENTICATE_STR(auth_str), TAG_END());
+               nua_respond(nh, SIP_407_PROXY_AUTH_REQUIRED, 
+                                       TAG_IF(msg, NUTAG_WITH_THIS_MSG(msg)), 
+                                       SIPTAG_PROXY_AUTHENTICATE_STR(auth_str), TAG_END());
        }
 
        switch_safe_free(auth_str);
@@ -1319,7 +1327,7 @@ uint8_t sofia_reg_handle_register(nua_t *nua, sofia_profile_t *profile, nua_hand
                        realm = from_host;
                }
 
-               sofia_reg_auth_challenge(nua, profile, nh, de, regtype, realm, stale);
+               sofia_reg_auth_challenge(profile, nh, de, regtype, realm, stale);
 
                if (profile->debug) {
                        switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send challenge for [%s@%s]\n", to_user, to_host);