FS-3385 --resolve
This commit is contained in:
parent
e1bdb65eef
commit
84f8868bf8
|
@ -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");
|
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);
|
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);
|
switch_channel_hangup(channel, SWITCH_CAUSE_USER_CHALLENGE);
|
||||||
} else if (code == 484 && msg->numeric_arg) {
|
} else if (code == 484 && msg->numeric_arg) {
|
||||||
const char *to = switch_channel_get_variable(channel, "sip_to_uri");
|
const char *to = switch_channel_get_variable(channel, "sip_to_uri");
|
||||||
|
|
|
@ -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_glue_track_event_handler(switch_event_t *event);
|
||||||
void sofia_presence_cancel(void);
|
void sofia_presence_cancel(void);
|
||||||
switch_status_t config_sofia(int reload, char *profile_name);
|
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);
|
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,
|
auth_res_t sofia_reg_parse_auth(sofia_profile_t *profile, sip_authorization_t const *authorization,
|
||||||
sip_t const *sip,
|
sip_t const *sip,
|
||||||
|
|
|
@ -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)
|
sofia_regtype_t regtype, const char *realm, int stale)
|
||||||
{
|
{
|
||||||
switch_uuid_t uuid;
|
switch_uuid_t uuid;
|
||||||
char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
|
char uuid_str[SWITCH_UUID_FORMATTED_LENGTH + 1];
|
||||||
char *sql, *auth_str;
|
char *sql, *auth_str;
|
||||||
|
msg_t *msg = NULL;
|
||||||
|
|
||||||
|
|
||||||
|
if (de && de->data) {
|
||||||
|
msg = de->data->e_msg;
|
||||||
|
}
|
||||||
|
|
||||||
switch_uuid_get(&uuid);
|
switch_uuid_get(&uuid);
|
||||||
switch_uuid_format(uuid_str, &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," : "");
|
auth_str = switch_mprintf("Digest realm=\"%q\", nonce=\"%q\",%s algorithm=MD5, qop=\"auth\"", realm, uuid_str, stale ? " stale=true," : "");
|
||||||
|
|
||||||
if (regtype == REG_REGISTER) {
|
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) {
|
} 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);
|
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;
|
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) {
|
if (profile->debug) {
|
||||||
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send challenge for [%s@%s]\n", to_user, to_host);
|
switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Send challenge for [%s@%s]\n", to_user, to_host);
|
||||||
|
|
Loading…
Reference in New Issue