From d2a1457e0b4ecdd512fe58fdb55ecc07fd141bea Mon Sep 17 00:00:00 2001 From: George Joseph Date: Thu, 11 Feb 2016 10:01:05 -0700 Subject: res_pjsip/config_transport: Allow reloading transports. The 'reload' mechanism actually involves closing the underlying socket and calling the appropriate udp, tcp or tls start functions again. Only outbound_registration, pubsub and session needed work to reset the transport before sending requests to insure that the pjsip transport didn't get pulled out from under them. In my testing, no calls were dropped when a transport was changed for any of the 3 transport types even if ip addresses or ports were changed. To be on the safe side however, a new transport option was added (allow_reload) which defaults to 'no'. Unless it's explicitly set to 'yes' for a transport, changes to that transport will be ignored on a reload of res_pjsip. This should preserve the current behavior. Change-Id: I5e759850e25958117d4c02f62ceb7244d7ec9edf --- ...cc0b5bc2c9_add_allow_reload_to_ps_transports.py | 27 ++++++++++++++++++++++ 1 file changed, 27 insertions(+) create mode 100644 contrib/ast-db-manage/config/versions/3bcc0b5bc2c9_add_allow_reload_to_ps_transports.py (limited to 'contrib') diff --git a/contrib/ast-db-manage/config/versions/3bcc0b5bc2c9_add_allow_reload_to_ps_transports.py b/contrib/ast-db-manage/config/versions/3bcc0b5bc2c9_add_allow_reload_to_ps_transports.py new file mode 100644 index 000000000..377179b04 --- /dev/null +++ b/contrib/ast-db-manage/config/versions/3bcc0b5bc2c9_add_allow_reload_to_ps_transports.py @@ -0,0 +1,27 @@ +"""Add allow_reload to ps_transports + +Revision ID: 3bcc0b5bc2c9 +Revises: dbc44d5a908 +Create Date: 2016-02-05 17:43:39.183785 + +""" + +# revision identifiers, used by Alembic. +revision = '3bcc0b5bc2c9' +down_revision = 'dbc44d5a908' + +from alembic import op +import sqlalchemy as sa +from sqlalchemy.dialects.postgresql import ENUM + +YESNO_NAME = 'yesno_values' +YESNO_VALUES = ['yes', 'no'] + +def upgrade(): + yesno_values = ENUM(*YESNO_VALUES, name=YESNO_NAME, create_type=False) + op.add_column('ps_transports', sa.Column('allow_reload', yesno_values)) + pass + +def downgrade(): + op.drop_column('ps_transports', 'allow_reload') + pass -- cgit v1.2.3