mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-24 22:58:21 +00:00
res_pjsip.c: Added disable_rport option for pjsip.conf
Currently when the pjsip making an outgoing request, it keep adding the rport parameter in a request message as a default. This causes unexpected rport handle at the other end. Added option for disable this behaviour in the pjsip.conf. This is a system option, but working as a gloabl option. ASTERISK-28959 Change-Id: I9596675e52a742774738b5aad5d1fec32f477abc
This commit is contained in:
@@ -1089,6 +1089,7 @@
|
|||||||
; This option must also be enabled on endpoints that
|
; This option must also be enabled on endpoints that
|
||||||
; require this functionality.
|
; require this functionality.
|
||||||
; (default: no)
|
; (default: no)
|
||||||
|
;disable_rport=no ; Disable the use of "rport" in outgoing requests.
|
||||||
;type= ; Must be of type system (default: "")
|
;type= ; Must be of type system (default: "")
|
||||||
|
|
||||||
;==========================GLOBAL SECTION OPTIONS=========================
|
;==========================GLOBAL SECTION OPTIONS=========================
|
||||||
|
@@ -0,0 +1,39 @@
|
|||||||
|
"""pjsip add disable_rport
|
||||||
|
|
||||||
|
Revision ID: 79290b511e4b
|
||||||
|
Revises: fbb7766f17bc
|
||||||
|
Create Date: 2020-06-25 22:21:37.529880
|
||||||
|
|
||||||
|
"""
|
||||||
|
|
||||||
|
# revision identifiers, used by Alembic.
|
||||||
|
revision = '79290b511e4b'
|
||||||
|
down_revision = 'fbb7766f17bc'
|
||||||
|
|
||||||
|
from alembic import op
|
||||||
|
import sqlalchemy as sa
|
||||||
|
from sqlalchemy.dialects.postgresql import ENUM
|
||||||
|
|
||||||
|
AST_BOOL_NAME = 'ast_bool_values'
|
||||||
|
# We'll just ignore the n/y and f/t abbreviations as Asterisk does not write
|
||||||
|
# those aliases.
|
||||||
|
AST_BOOL_VALUES = [ '0', '1',
|
||||||
|
'off', 'on',
|
||||||
|
'false', 'true',
|
||||||
|
'no', 'yes' ]
|
||||||
|
|
||||||
|
|
||||||
|
def upgrade():
|
||||||
|
############################# Enums ##############################
|
||||||
|
|
||||||
|
# ast_bool_values has already been created, so use postgres enum object
|
||||||
|
# type to get around "already created" issue - works okay with mysql
|
||||||
|
ast_bool_values = ENUM(*AST_BOOL_VALUES, name=AST_BOOL_NAME, create_type=False)
|
||||||
|
|
||||||
|
op.add_column('ps_systems', sa.Column('disable_rport', ast_bool_values))
|
||||||
|
|
||||||
|
|
||||||
|
def downgrade():
|
||||||
|
if op.get_context().bind.dialect.name == 'mssql':
|
||||||
|
op.drop_constraint('ck_ps_systems_disable_rport_ast_bool_values','ps_systems')
|
||||||
|
op.drop_column('ps_systems', 'disable_rport')
|
@@ -0,0 +1,9 @@
|
|||||||
|
Subject: res_pjsip
|
||||||
|
|
||||||
|
Added a new PJSIP system setting called disable_rport.
|
||||||
|
Default is no to keep support working as before.
|
||||||
|
|
||||||
|
If it is false (default) it adds the 'rport' parameter in the outgoing request message.
|
||||||
|
If it is true it does not add the 'rport' parameter in the outgoing request message.
|
||||||
|
|
||||||
|
This is a system option, but working as a global option.
|
@@ -1831,6 +1831,12 @@
|
|||||||
</para></note>
|
</para></note>
|
||||||
</description>
|
</description>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
<configOption name="disable_rport" default="no">
|
||||||
|
<synopsis>Disable the use of rport in outgoing requests.</synopsis>
|
||||||
|
<description><para>
|
||||||
|
Remove "rport" parameter from the outgoing requests.
|
||||||
|
</para></description>
|
||||||
|
</configOption>
|
||||||
<configOption name="type">
|
<configOption name="type">
|
||||||
<synopsis>Must be of type 'system' UNLESS the object name is 'system'.</synopsis>
|
<synopsis>Must be of type 'system' UNLESS the object name is 'system'.</synopsis>
|
||||||
</configOption>
|
</configOption>
|
||||||
|
@@ -59,6 +59,8 @@ struct system_config {
|
|||||||
*/
|
*/
|
||||||
unsigned int follow_early_media_fork;
|
unsigned int follow_early_media_fork;
|
||||||
unsigned int accept_multiple_sdp_answers;
|
unsigned int accept_multiple_sdp_answers;
|
||||||
|
/*! Disable the use of rport in outgoing requests */
|
||||||
|
unsigned int disable_rport;
|
||||||
};
|
};
|
||||||
|
|
||||||
static struct ast_threadpool_options sip_threadpool_options = {
|
static struct ast_threadpool_options sip_threadpool_options = {
|
||||||
@@ -131,6 +133,8 @@ static int system_apply(const struct ast_sorcery *sorcery, void *obj)
|
|||||||
pjsip_cfg()->endpt.disable_tcp_switch =
|
pjsip_cfg()->endpt.disable_tcp_switch =
|
||||||
system->disable_tcp_switch ? PJ_TRUE : PJ_FALSE;
|
system->disable_tcp_switch ? PJ_TRUE : PJ_FALSE;
|
||||||
|
|
||||||
|
pjsip_cfg()->endpt.disable_rport = system->disable_rport ? PJ_TRUE : PJ_FALSE;
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -209,6 +213,8 @@ int ast_sip_initialize_system(void)
|
|||||||
OPT_BOOL_T, 1, FLDSET(struct system_config, follow_early_media_fork));
|
OPT_BOOL_T, 1, FLDSET(struct system_config, follow_early_media_fork));
|
||||||
ast_sorcery_object_field_register(system_sorcery, "system", "accept_multiple_sdp_answers", "no",
|
ast_sorcery_object_field_register(system_sorcery, "system", "accept_multiple_sdp_answers", "no",
|
||||||
OPT_BOOL_T, 1, FLDSET(struct system_config, accept_multiple_sdp_answers));
|
OPT_BOOL_T, 1, FLDSET(struct system_config, accept_multiple_sdp_answers));
|
||||||
|
ast_sorcery_object_field_register(system_sorcery, "system", "disable_rport", "no",
|
||||||
|
OPT_BOOL_T, 1, FLDSET(struct system_config, disable_rport));
|
||||||
|
|
||||||
ast_sorcery_load(system_sorcery);
|
ast_sorcery_load(system_sorcery);
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user