mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-02 11:06:31 +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:
committed by
Friendly Automation
parent
f323ac334b
commit
52e1e362f0
@@ -1008,6 +1008,7 @@
|
||||
; This option must also be enabled on endpoints that
|
||||
; require this functionality.
|
||||
; (default: no)
|
||||
;disable_rport=no ; Disable the use of "rport" in outgoing requests.
|
||||
;type= ; Must be of type system (default: "")
|
||||
|
||||
;==========================GLOBAL SECTION OPTIONS=========================
|
||||
|
@@ -0,0 +1,39 @@
|
||||
"""pjsip add disable_rport
|
||||
|
||||
Revision ID: 79290b511e4b
|
||||
Revises: 339e1dfa644d
|
||||
Create Date: 2020-06-25 22:21:37.529880
|
||||
|
||||
"""
|
||||
|
||||
# revision identifiers, used by Alembic.
|
||||
revision = '79290b511e4b'
|
||||
down_revision = '339e1dfa644d'
|
||||
|
||||
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.
|
@@ -1699,6 +1699,12 @@
|
||||
</para></note>
|
||||
</description>
|
||||
</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">
|
||||
<synopsis>Must be of type 'system' UNLESS the object name is 'system'.</synopsis>
|
||||
</configOption>
|
||||
|
@@ -59,6 +59,8 @@ struct system_config {
|
||||
*/
|
||||
unsigned int follow_early_media_fork;
|
||||
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 = {
|
||||
@@ -131,6 +133,8 @@ static int system_apply(const struct ast_sorcery *sorcery, void *obj)
|
||||
pjsip_cfg()->endpt.disable_tcp_switch =
|
||||
system->disable_tcp_switch ? PJ_TRUE : PJ_FALSE;
|
||||
|
||||
pjsip_cfg()->endpt.disable_rport = system->disable_rport ? PJ_TRUE : PJ_FALSE;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
@@ -209,6 +213,8 @@ int ast_sip_initialize_system(void)
|
||||
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",
|
||||
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);
|
||||
|
||||
|
Reference in New Issue
Block a user