From: Joshua C. Colp Date: Wed, 6 Apr 2022 10:23:27 +0000 (-0300) Subject: res_pjsip: Always set async_operations to 1. X-Git-Tag: 19.4.0-rc1~26 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=8584ad425aca040f258031f4066e88e4fdb25b01;p=thirdparty%2Fasterisk.git res_pjsip: Always set async_operations to 1. The async_operations setting on a transport configures how many simultaneous incoming packets the transport can handle when multiple threads are polling and waiting on the transport. As we only use a single thread this was needlessly creating incoming packets when set to a non-default value, wasting memory. ASTERISK-30006 Change-Id: I1915973ef352862dc2852a6ba4cfce2ed536e68f --- diff --git a/configs/samples/pjsip.conf.sample b/configs/samples/pjsip.conf.sample index b1c1657ff7..2d93bd1276 100644 --- a/configs/samples/pjsip.conf.sample +++ b/configs/samples/pjsip.conf.sample @@ -1025,8 +1025,6 @@ ;[transport] ; SYNOPSIS: SIP Transport ; -;async_operations=1 ; Number of simultaneous Asynchronous Operations - ; (default: "1") ;bind= ; IP Address and optional port to bind to for this transport (default: ; "") ; Note that for the Websocket transport the TLS configuration is configured diff --git a/doc/UPGRADE-staging/res_pjsip_async_operations.txt b/doc/UPGRADE-staging/res_pjsip_async_operations.txt new file mode 100644 index 0000000000..cf9f9426da --- /dev/null +++ b/doc/UPGRADE-staging/res_pjsip_async_operations.txt @@ -0,0 +1,7 @@ +Subject: res_pjsip + +The 'async_operations' setting on transports is no longer +obeyed and instead is always set to 1. This is due to the +functionality not being applicable to Asterisk and causing +excess unnecessary memory usage. This setting will now be +ignored but can also be removed from the configuration file. diff --git a/res/res_pjsip/config_transport.c b/res/res_pjsip/config_transport.c index d0a28cd04c..6319ecfafb 100644 --- a/res/res_pjsip/config_transport.c +++ b/res/res_pjsip/config_transport.c @@ -659,6 +659,12 @@ static int transport_apply(const struct ast_sorcery *sorcery, void *obj) return -1; } + if (transport->async_operations != 1) { + ast_log(LOG_WARNING, "The async_operations setting on transport '%s' has been set to '%d'. The setting can no longer be set and is always 1.\n", + transport_id, transport->async_operations); + transport->async_operations = 1; + } + perm_state = find_internal_state_by_transport(transport); if (perm_state) { ast_sorcery_diff(sorcery, perm_state->transport, transport, &changes); diff --git a/res/res_pjsip/pjsip_config.xml b/res/res_pjsip/pjsip_config.xml index ca5a266849..9a9ef485bc 100644 --- a/res/res_pjsip/pjsip_config.xml +++ b/res/res_pjsip/pjsip_config.xml @@ -1622,7 +1622,7 @@ will not suffice. - Number of simultaneous Asynchronous Operations + Number of simultaneous Asynchronous Operations, can no longer be set, always set to 1 IP Address and optional port to bind to for this transport