mirror of
https://github.com/asterisk/asterisk.git
synced 2025-09-06 04:30:28 +00:00
chan_sip: Allow websockets to be disabled.
This patch adds a new setting "websockets_enabled" to sip.conf. Setting this to false allows chan_sip to be used without causing conflicts with res_pjsip_transport_websocket. ASTERISK-24106 #close Reported by: Andrew Nagy Change-Id: I04fe8c4f2d57b2d7375e0e25826c91a72e93bea7
This commit is contained in:
7
CHANGES
7
CHANGES
@@ -12,6 +12,13 @@
|
|||||||
--- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------
|
--- Functionality changes from Asterisk 13.6.0 to Asterisk 13.7.0 ------------
|
||||||
------------------------------------------------------------------------------
|
------------------------------------------------------------------------------
|
||||||
|
|
||||||
|
chan_sip
|
||||||
|
------------------
|
||||||
|
* The websockets_enabled option has been added to the general section of
|
||||||
|
sip.conf. The option is enabled by default to match the previous behavior.
|
||||||
|
The option should be disabled when using res_pjsip_transport_websockets to
|
||||||
|
ensure chan_sip will not conflict with PJSIP websockets.
|
||||||
|
|
||||||
Dialplan Functions
|
Dialplan Functions
|
||||||
------------------
|
------------------
|
||||||
* The HOLD_INTERCEPT dialplan function now actually exists in the source tree.
|
* The HOLD_INTERCEPT dialplan function now actually exists in the source tree.
|
||||||
|
@@ -31261,6 +31261,7 @@ static int reload_config(enum channelreloadreason reason)
|
|||||||
int bindport = 0;
|
int bindport = 0;
|
||||||
int acl_change_subscription_needed = 0;
|
int acl_change_subscription_needed = 0;
|
||||||
int min_subexpiry_set = 0, max_subexpiry_set = 0;
|
int min_subexpiry_set = 0, max_subexpiry_set = 0;
|
||||||
|
int websocket_was_enabled = sip_cfg.websocket_enabled;
|
||||||
|
|
||||||
run_start = time(0);
|
run_start = time(0);
|
||||||
ast_unload_realtime("sipregs");
|
ast_unload_realtime("sipregs");
|
||||||
@@ -32047,6 +32048,8 @@ static int reload_config(enum channelreloadreason reason)
|
|||||||
ast_log(LOG_WARNING, "'%s' is not a valid websocket_write_timeout value at line %d. Using default '%d'.\n", v->value, v->lineno, AST_DEFAULT_WEBSOCKET_WRITE_TIMEOUT);
|
ast_log(LOG_WARNING, "'%s' is not a valid websocket_write_timeout value at line %d. Using default '%d'.\n", v->value, v->lineno, AST_DEFAULT_WEBSOCKET_WRITE_TIMEOUT);
|
||||||
sip_cfg.websocket_write_timeout = AST_DEFAULT_WEBSOCKET_WRITE_TIMEOUT;
|
sip_cfg.websocket_write_timeout = AST_DEFAULT_WEBSOCKET_WRITE_TIMEOUT;
|
||||||
}
|
}
|
||||||
|
} else if (!strcasecmp(v->name, "websocket_enabled")) {
|
||||||
|
sip_cfg.websocket_enabled = ast_true(v->value);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -32392,6 +32395,15 @@ static int reload_config(enum channelreloadreason reason)
|
|||||||
notify_types = NULL;
|
notify_types = NULL;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* If the module is loading it's not time to enable websockets yet. */
|
||||||
|
if (reason != CHANNEL_MODULE_LOAD && websocket_was_enabled != sip_cfg.websocket_enabled) {
|
||||||
|
if (sip_cfg.websocket_enabled) {
|
||||||
|
ast_websocket_add_protocol("sip", sip_websocket_callback);
|
||||||
|
} else {
|
||||||
|
ast_websocket_remove_protocol("sip", sip_websocket_callback);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
run_end = time(0);
|
run_end = time(0);
|
||||||
ast_debug(4, "SIP reload_config done...Runtime= %d sec\n", (int)(run_end-run_start));
|
ast_debug(4, "SIP reload_config done...Runtime= %d sec\n", (int)(run_end-run_start));
|
||||||
|
|
||||||
@@ -34573,7 +34585,9 @@ static int load_module(void)
|
|||||||
sip_register_tests();
|
sip_register_tests();
|
||||||
network_change_stasis_subscribe();
|
network_change_stasis_subscribe();
|
||||||
|
|
||||||
ast_websocket_add_protocol("sip", sip_websocket_callback);
|
if (sip_cfg.websocket_enabled) {
|
||||||
|
ast_websocket_add_protocol("sip", sip_websocket_callback);
|
||||||
|
}
|
||||||
|
|
||||||
return AST_MODULE_LOAD_SUCCESS;
|
return AST_MODULE_LOAD_SUCCESS;
|
||||||
}
|
}
|
||||||
@@ -34588,7 +34602,9 @@ static int unload_module(void)
|
|||||||
|
|
||||||
ast_sip_api_provider_unregister();
|
ast_sip_api_provider_unregister();
|
||||||
|
|
||||||
ast_websocket_remove_protocol("sip", sip_websocket_callback);
|
if (sip_cfg.websocket_enabled) {
|
||||||
|
ast_websocket_remove_protocol("sip", sip_websocket_callback);
|
||||||
|
}
|
||||||
|
|
||||||
network_change_stasis_unsubscribe();
|
network_change_stasis_unsubscribe();
|
||||||
acl_change_event_stasis_unsubscribe();
|
acl_change_event_stasis_unsubscribe();
|
||||||
|
@@ -774,6 +774,7 @@ struct sip_settings {
|
|||||||
int tcp_enabled;
|
int tcp_enabled;
|
||||||
int default_max_forwards; /*!< Default max forwards (SIP Anti-loop) */
|
int default_max_forwards; /*!< Default max forwards (SIP Anti-loop) */
|
||||||
int websocket_write_timeout; /*!< Socket write timeout for websocket transports, in ms */
|
int websocket_write_timeout; /*!< Socket write timeout for websocket transports, in ms */
|
||||||
|
int websocket_enabled; /*!< Are websockets enabled? */
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ast_websocket;
|
struct ast_websocket;
|
||||||
|
@@ -229,6 +229,10 @@ tcpbindaddr=0.0.0.0 ; IP address for TCP server to bind to (0.0.0.0
|
|||||||
; unauthenticated sessions that will be allowed
|
; unauthenticated sessions that will be allowed
|
||||||
; to connect at any given time. (default: 100)
|
; to connect at any given time. (default: 100)
|
||||||
|
|
||||||
|
;websocket_enabled = true ; Set to false to prevent chan_sip from listening to websockets. This
|
||||||
|
; is neeeded when using chan_sip and res_pjsip_transport_websockets on
|
||||||
|
; the same system.
|
||||||
|
|
||||||
;websocket_write_timeout = 100 ; Default write timeout to set on websocket transports.
|
;websocket_write_timeout = 100 ; Default write timeout to set on websocket transports.
|
||||||
; This value may need to be adjusted for connections where
|
; This value may need to be adjusted for connections where
|
||||||
; Asterisk must write a substantial amount of data and the
|
; Asterisk must write a substantial amount of data and the
|
||||||
|
Reference in New Issue
Block a user