From 8584ad425aca040f258031f4066e88e4fdb25b01 Mon Sep 17 00:00:00 2001 From: "Joshua C. Colp" Date: Wed, 6 Apr 2022 07:23:27 -0300 Subject: [PATCH] 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 --- configs/samples/pjsip.conf.sample | 2 -- doc/UPGRADE-staging/res_pjsip_async_operations.txt | 7 +++++++ res/res_pjsip/config_transport.c | 6 ++++++ res/res_pjsip/pjsip_config.xml | 2 +- 4 files changed, 14 insertions(+), 3 deletions(-) create mode 100644 doc/UPGRADE-staging/res_pjsip_async_operations.txt 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 -- 2.47.2