]> git.ipfire.org Git - thirdparty/asterisk.git/commitdiff
res_pjsip: Backport missing commits for user_eq_phone
authorMatthew Jordan <mjordan@digium.com>
Wed, 24 Dec 2014 15:26:53 +0000 (15:26 +0000)
committerMatthew Jordan <mjordan@digium.com>
Wed, 24 Dec 2014 15:26:53 +0000 (15:26 +0000)
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

git-svn-id: https://origsvn.digium.com/svn/asterisk/branches/13@430092 65c4cc65-6c06-0410-ace0-fbb531ad65f3

contrib/ast-db-manage/config/versions/371a3bf4143e_add_user_eq_phone_option_to_pjsip.py [new file with mode: 0644]
res/res_pjsip.c

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 (file)
index 0000000..145d6be
--- /dev/null
@@ -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')
index 223e58429a2fec108ab772af9e89805a008752d9..6f5826997d7657422e2bfdb25c7e72d80368f88e 100644 (file)
@@ -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++;