[Asterisk-code-review] chan_dahdi: Don't append cadences on dahdi restart. (asterisk[16])

Joshua Colp asteriskteam at digium.com
Mon May 2 08:56:02 CDT 2022


Joshua Colp has submitted this change. ( https://gerrit.asterisk.org/c/asterisk/+/18478 )

Change subject: chan_dahdi: Don't append cadences on dahdi restart.
......................................................................

chan_dahdi: Don't append cadences on dahdi restart.

Currently, if any custom ring cadences are specified, they are
appended to the array of cadences from wherever we left off
last time. This works properly the first time, but on subsequent
dahdi restarts, it means that the existing cadences are left
alone and (most likely) the same cadences are then re-added
afterwards. In short order, the cadence array gets maxed out
and the user begins seeing warnings that the array is full
and no more cadences may be added.

This buggy behavior persists until Asterisk is completely
restarted; however, if and when dahdi restart is run again,
then the same problem is reintroduced.

This fixes this behavior so that cadence parsing is more
idempotent, that is so running dahdi restart multiple times
starts adding cadences from the beginning, rather than from
wherever the last cadence was added.

As before, it is still not possible to revert to the default
cadences by simply removing all cadences in this manner, nor
is it possible to delete existing cadences. However, this
does make it possible to update existing cadences, which
was not possible before, and also ensures that the cadences
remain unchanged if the config remains unchanged.

ASTERISK-29990 #close

Change-Id: Ie32ea3e8a243b766756b1afce684d4a31ee7421d
---
M channels/chan_dahdi.c
M configs/samples/chan_dahdi.conf.sample
A doc/CHANGES-staging/chan_dahdi_cadences.txt
3 files changed, 14 insertions(+), 2 deletions(-)

Approvals:
  Kevin Harwell: Looks good to me, but someone else must approve
  George Joseph: Looks good to me, approved
  Joshua Colp: Approved for Submit



diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index c834112..6fb0eb2 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -17880,6 +17880,9 @@
 	int y;
 	struct ast_variable *dahdichan = NULL;
 
+	/* Re-parse any cadences from beginning, rather than appending until we run out of room */
+	user_has_defined_cadences = 0;
+
 	for (; v; v = v->next) {
 		if (!ast_jb_read_conf(&global_jbconf, v->name, v->value))
 			continue;
diff --git a/configs/samples/chan_dahdi.conf.sample b/configs/samples/chan_dahdi.conf.sample
index 5c3af43..6333351 100644
--- a/configs/samples/chan_dahdi.conf.sample
+++ b/configs/samples/chan_dahdi.conf.sample
@@ -1286,10 +1286,11 @@
 ; You can define your own custom ring cadences here.  You can define up to 8
 ; pairs.  If the silence is negative, it indicates where the caller ID spill is
 ; to be placed.  Also, if you define any custom cadences, the default cadences
-; will be turned off.
+; will be turned off (overwritten).
 ;
 ; This setting is global, rather than per-channel. It will not update on
-; a reload.
+; a reload, but new and modified cadences will update on dahdi restart.
+; A maximum of 24 cadences may be specified.
 ;
 ; Syntax is:  cadence=ring,silence[,ring,silence[...]]
 ;
diff --git a/doc/CHANGES-staging/chan_dahdi_cadences.txt b/doc/CHANGES-staging/chan_dahdi_cadences.txt
new file mode 100644
index 0000000..b888926
--- /dev/null
+++ b/doc/CHANGES-staging/chan_dahdi_cadences.txt
@@ -0,0 +1,8 @@
+Subject: chan_dahdi
+
+Previously, cadences were appended on dahdi restart,
+rather than reloaded. This prevented cadences from
+being updated and maxed out the available cadences
+if reloaded multiple times. This behavior is fixed
+so that reloading cadences is idempotent and cadences
+can actually be reloaded.

-- 
To view, visit https://gerrit.asterisk.org/c/asterisk/+/18478
To unsubscribe, or for help writing mail filters, visit https://gerrit.asterisk.org/settings

Gerrit-Project: asterisk
Gerrit-Branch: 16
Gerrit-Change-Id: Ie32ea3e8a243b766756b1afce684d4a31ee7421d
Gerrit-Change-Number: 18478
Gerrit-PatchSet: 2
Gerrit-Owner: N A <mail at interlinked.x10host.com>
Gerrit-Reviewer: Friendly Automation
Gerrit-Reviewer: George Joseph <gjoseph at digium.com>
Gerrit-Reviewer: Joshua Colp <jcolp at sangoma.com>
Gerrit-Reviewer: Kevin Harwell <kharwell at digium.com>
Gerrit-MessageType: merged
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20220502/14145c86/attachment.html>


More information about the asterisk-code-review mailing list