From 498ce4fc83953ed53c74f054163c829a439737df Mon Sep 17 00:00:00 2001 From: Luis Azedo Date: Mon, 14 Nov 2016 17:18:32 +0000 Subject: [PATCH] FS-9735 - send unknown headers to switch_ivr_set_user creeates switch_ivr_set_user_extended to receive params to pass to xml_locate_user --- src/include/switch_ivr.h | 1 + src/mod/endpoints/mod_sofia/sofia.c | 7 ++++++- src/switch_ivr.c | 8 ++++++-- 3 files changed, 13 insertions(+), 3 deletions(-) diff --git a/src/include/switch_ivr.h b/src/include/switch_ivr.h index 712179d783..c675fe3da8 100644 --- a/src/include/switch_ivr.h +++ b/src/include/switch_ivr.h @@ -961,6 +961,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_say_ip(switch_core_session_t *session switch_input_args_t *args); SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *session, const char *data); +SWITCH_DECLARE(switch_status_t) switch_ivr_set_user_extended(switch_core_session_t *session, const char *data, switch_event_t *params); SWITCH_DECLARE(switch_status_t) switch_ivr_set_user_xml(switch_core_session_t *session, const char *prefix, const char *user, const char *domain, switch_xml_t x_user); diff --git a/src/mod/endpoints/mod_sofia/sofia.c b/src/mod/endpoints/mod_sofia/sofia.c index a7833b16c6..9715df7d4f 100644 --- a/src/mod/endpoints/mod_sofia/sofia.c +++ b/src/mod/endpoints/mod_sofia/sofia.c @@ -9965,7 +9965,12 @@ void sofia_handle_sip_i_invite(switch_core_session_t *session, nua_t *nua, sofia if (sip && sip->sip_from) { user = switch_core_session_sprintf(session, "%s@%s", sip->sip_from->a_url->url_user, sip->sip_from->a_url->url_host); - blind_result = switch_ivr_set_user(session, user); + switch_event_create(&v_event, SWITCH_EVENT_REQUEST_PARAMS); + for (un = sip->sip_unknown; un; un = un->un_next) { + switch_event_add_header_string(v_event, SWITCH_STACK_BOTTOM, un->un_name, un->un_value); + }; + blind_result = switch_ivr_set_user_extended(session, user, v_event); + switch_event_destroy(&v_event); } if(!sofia_test_pflag(profile, PFLAG_BLIND_AUTH_ENFORCE_RESULT) || blind_result == SWITCH_STATUS_SUCCESS) { is_auth++; diff --git a/src/switch_ivr.c b/src/switch_ivr.c index bed71c97c6..99728ab686 100644 --- a/src/switch_ivr.c +++ b/src/switch_ivr.c @@ -3833,6 +3833,11 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_set_user_xml(switch_core_session_t *s } SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *session, const char *data) +{ + return switch_ivr_set_user_extended(session, data, NULL); +} + +SWITCH_DECLARE(switch_status_t) switch_ivr_set_user_extended(switch_core_session_t *session, const char *data, switch_event_t *params) { switch_xml_t x_user = 0; char *user, *domain; @@ -3856,8 +3861,7 @@ SWITCH_DECLARE(switch_status_t) switch_ivr_set_user(switch_core_session_t *sessi *domain++ = '\0'; - - if (switch_xml_locate_user_merged("id", user, domain, NULL, &x_user, NULL) != SWITCH_STATUS_SUCCESS) { + if (switch_xml_locate_user_merged("id", user, domain, NULL, &x_user, params) != SWITCH_STATUS_SUCCESS) { switch_log_printf(SWITCH_CHANNEL_SESSION_LOG(session), SWITCH_LOG_WARNING, "can't find user [%s@%s]\n", user, domain); goto done; }