From 36f2815223720a19b111e0b28f72d38efa483d47 Mon Sep 17 00:00:00 2001 From: Joseph Nadiv Date: Thu, 20 May 2021 13:16:11 -0400 Subject: [PATCH] res_pjsip/pjsip_configurator: Parse user field embedded domain If the user field has an @, this commit will parse the string and extract the user field and domain fields in a PJSIP endpoint. Change-Id: Ie36b265c476a6052b8eb5780830c78271f7cf533 --- res/res_pjsip/pjsip_configuration.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/res/res_pjsip/pjsip_configuration.c b/res/res_pjsip/pjsip_configuration.c index a4968431c7..ff30c7de61 100644 --- a/res/res_pjsip/pjsip_configuration.c +++ b/res/res_pjsip/pjsip_configuration.c @@ -1009,6 +1009,24 @@ static int from_user_handler(const struct aco_option *opt, } } + /*Check for @ and split user and domain*/ + if (strchr(var->value, '@')) { + char *val = ast_strdupa(var->value); + char *val_left = NULL; + char *val_right = NULL; + + char *val_buf = strtok(val, "@"); + int size = strlen(val_buf); + ast_copy_string(val_left, val_buf, size + 1); + val_buf = strtok(NULL, "@"); + size = strlen(val_buf); + ast_copy_string(val_right, val_buf, size + 1); + + ast_string_field_set(endpoint, fromuser, val_left); + ast_string_field_set(endpoint, fromdomain, val_right); + return 0; + } + ast_string_field_set(endpoint, fromuser, var->value); return 0; @@ -1923,8 +1941,8 @@ int ast_res_pjsip_initialize_configuration(void) ast_sorcery_object_field_register(sip_sorcery, "endpoint", "cos_video", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, media.cos_video)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "allow_subscribe", "yes", OPT_BOOL_T, 1, FLDSET(struct ast_sip_endpoint, subscription.allow)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "sub_min_expiry", "0", OPT_UINT_T, 0, FLDSET(struct ast_sip_endpoint, subscription.minexpiry)); - ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "from_user", "", from_user_handler, from_user_to_str, NULL, 0, 0); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "from_domain", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, fromdomain)); + ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "from_user", "", from_user_handler, from_user_to_str, NULL, 0, 0); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "mwi_from_user", "", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, subscription.mwi.fromuser)); ast_sorcery_object_field_register(sip_sorcery, "endpoint", "rtp_engine", "asterisk", OPT_STRINGFIELD_T, 0, STRFLDSET(struct ast_sip_endpoint, media.rtp.engine)); ast_sorcery_object_field_register_custom(sip_sorcery, "endpoint", "dtls_verify", "no", dtls_handler, dtlsverify_to_str, NULL, 0, 0); -- 2.24.4