From c9af0b8c7ee643a809569c101743f8176e76f147 Mon Sep 17 00:00:00 2001 From: Matthew Jordan Date: Wed, 24 Dec 2014 15:27:22 +0000 Subject: [PATCH] res_pjsip: Backport missing commits for user_eq_phone This backports the following from trunk, which were missed: r427257 | file | 2014-11-04 16:31:16 -0600 (Tue, 04 Nov 2014) | 2 lines res_pjsip: Allow + at the beginning of a phone number when user_eq_phone is enabled. r427259 | file | 2014-11-04 16:51:32 -0600 (Tue, 04 Nov 2014) | 2 lines res_pjsip: Apply the 'user_eq_phone' setting to the To header as well. It also adds the Alembic script for the option. ASTERISK-24643 ........ Merged revisions 430092 from http://svn.asterisk.org/svn/asterisk/branches/13 git-svn-id: https://origsvn.digium.com/svn/asterisk/certified/branches/13.1@430093 65c4cc65-6c06-0410-ace0-fbb531ad65f3 --- ...4143e_add_user_eq_phone_option_to_pjsip.py | 30 +++++++++++++++++++ res/res_pjsip.c | 5 ++++ 2 files changed, 35 insertions(+) create mode 100644 contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py diff --git a/contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py b/contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py new file mode 100644 index 0000000000..145d6bea65 --- /dev/null +++ b/contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py @@ -0,0 +1,30 @@ +"""add user_eq_phone option to pjsip + +Revision ID: 371a3bf4143e +Revises: 10aedae86a32 +Create Date: 2014-10-13 13:46:24.474675 + +""" + +# revision identifiers, used by Alembic. +revision = '371a3bf4143e' +down_revision = '10aedae86a32' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects.postgresql import ENUM + +YESNO_NAME = 'yesno_values' +YESNO_VALUES = ['yes', 'no'] + +def upgrade(): + ############################# Enums ############################## + + # yesno_values have already been created, so use postgres enum object + # type to get around "already created" issue - works okay with mysql + yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False) + + op.add_column('ps_endpoints', sa.Column('user_eq_phone', yesno_values)) + +def downgrade(): + op.drop_column('ps_endpoints', 'user_eq_phone') diff --git a/res/res_pjsip.c b/res/res_pjsip.c index 223e58429a..6f5826997d 100644 --- a/res/res_pjsip.c +++ b/res/res_pjsip.c @@ -2155,6 +2155,10 @@ void ast_sip_add_usereqphone(const struct ast_sip_endpoint *endpoint, pj_pool_t return; } + if (pj_strbuf(&sip_uri->user)[0] == '+') { + i = 1; + } + /* Test URI user against allowed characters in AST_DIGIT_ANY */ for (; i < pj_strlen(&sip_uri->user); i++) { if (!strchr(AST_DIGIT_ANYNUM, pj_strbuf(&sip_uri->user)[i])) { @@ -2221,6 +2225,7 @@ pjsip_dialog *ast_sip_create_dialog_uac(const struct ast_sip_endpoint *endpoint, /* Add the user=phone parameter if applicable */ ast_sip_add_usereqphone(endpoint, dlg->pool, dlg->target); + ast_sip_add_usereqphone(endpoint, dlg->pool, dlg->remote.info->uri); /* We have to temporarily bump up the sess_count here so the dialog is not prematurely destroyed */ dlg->sess_count++;