From: Joseph Nadiv Date: Thu, 20 May 2021 07:15:30 +0000 (-0400) Subject: res_pjsip.c: Support endpoints with domain info in username X-Git-Tag: 19.0.0-rc1~126 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=98e4119642e258b4159db89dc5ddf9e37365a344;p=thirdparty%2Fasterisk.git res_pjsip.c: Support endpoints with domain info in username In multidomain environments, it is desirable to create PJSIP endpoints with the domain info in the endpoint name in pjsip_endpoint.conf. This resulted in an error with registrations, NOTIFY, and OPTIONS packet generation. This commit will detect if there is an @ in the endpoint identifier and generate the URI accordingly so NOTIFY and OPTIONS From headers will generate correctly. ASTERISK-28393 Change-Id: I96f8d01dfdd5573ba7a28299e46271dd4210b619 --- diff --git a/doc/CHANGES-staging/res_pjsip.txt b/doc/CHANGES-staging/res_pjsip.txt new file mode 100644 index 0000000000..ffbf13a9c2 --- /dev/null +++ b/doc/CHANGES-staging/res_pjsip.txt @@ -0,0 +1,5 @@ +Subject: res_pjsip + +PJSIP support of registrations of endpoints in multidomain +scenarios, where the endpoint contains the domain info +in pjsip_endpoint.conf diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 3e9e4541ec..809096d096 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -3841,6 +3841,17 @@ static int sip_dialog_create_from(pj_pool_t *pool, pj_str_t *from, const char *u type |= PJSIP_TRANSPORT_IPV6; } + /* In multidomain scenario, username may contain @ with domain info */ + if (!ast_sip_get_disable_multi_domain() && strchr(user, '@')) { + from->ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); + from->slen = pj_ansi_snprintf(from->ptr, PJSIP_MAX_URL_SIZE, + "", + user, + (type != PJSIP_TRANSPORT_UDP && type != PJSIP_TRANSPORT_UDP6) ? ";transport=" : "", + (type != PJSIP_TRANSPORT_UDP && type != PJSIP_TRANSPORT_UDP6) ? pjsip_transport_get_type_name(type) : ""); + return 0; + } + if (!ast_strlen_zero(domain)) { from->ptr = pj_pool_alloc(pool, PJSIP_MAX_URL_SIZE); from->slen = pj_ansi_snprintf(from->ptr, PJSIP_MAX_URL_SIZE,