[Asterisk-code-review] sig_analog: Allow immediate fake ring to be suppressed. (asterisk[master])

N A asteriskteam at digium.com
Thu Dec 15 15:05:09 CST 2022


N A has uploaded this change for review. ( https://gerrit.asterisk.org/c/asterisk/+/19715 )


Change subject: sig_analog: Allow immediate fake ring to be suppressed.
......................................................................

sig_analog: Allow immediate fake ring to be suppressed.

When immediate=yes on an FXS channel, sig_analog will
start fake audible ringback that continues until the
channel is answered. Even if it answers immediately,
the ringback is still audible for a brief moment.
This can be disruptive and unwanted behavior.

This adds an option to disable this behavior, though
the default behavior remains unchanged.

ASTERISK-30003 #close

Change-Id: Idda6e56c30e7efbb6f766366d9752e78f4da3167
---
M channels/chan_dahdi.c
M channels/chan_dahdi.h
M channels/sig_analog.c
M channels/sig_analog.h
M configs/samples/chan_dahdi.conf.sample
A doc/CHANGES-staging/chan_dahdi_immediatering.txt
6 files changed, 48 insertions(+), 1 deletion(-)



  git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/15/19715/1

diff --git a/channels/chan_dahdi.c b/channels/chan_dahdi.c
index 5607eb0..9b0160e 100644
--- a/channels/chan_dahdi.c
+++ b/channels/chan_dahdi.c
@@ -1027,6 +1027,7 @@
 #endif
 		.chan = {
 			.context = "default",
+			.immediatering = 1,
 			.cid_num = "",
 			.cid_name = "",
 			.cid_tag = "",
@@ -12779,6 +12780,7 @@
 		}
 #endif
 		tmp->immediate = conf->chan.immediate;
+		tmp->immediatering = conf->chan.immediatering;
 		tmp->transfertobusy = conf->chan.transfertobusy;
 		if (chan_sig & __DAHDI_SIG_FXS) {
 			tmp->mwimonitor_fsk = conf->chan.mwimonitor_fsk;
@@ -13108,6 +13110,7 @@
 				analog_p->canpark = conf->chan.canpark;
 				analog_p->dahditrcallerid = conf->chan.dahditrcallerid;
 				analog_p->immediate = conf->chan.immediate;
+				analog_p->immediatering = conf->chan.immediatering;
 				analog_p->permhidecallerid = conf->chan.permhidecallerid;
 				analog_p->pulse = conf->chan.pulse;
 				analog_p->threewaycalling = conf->chan.threewaycalling;
@@ -18312,6 +18315,8 @@
 			}
 		} else if (!strcasecmp(v->name, "immediate")) {
 			confp->chan.immediate = ast_true(v->value);
+		} else if (!strcasecmp(v->name, "immediatering")) {
+			confp->chan.immediatering = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "transfertobusy")) {
 			confp->chan.transfertobusy = ast_true(v->value);
 		} else if (!strcasecmp(v->name, "mwimonitor")) {
diff --git a/channels/chan_dahdi.h b/channels/chan_dahdi.h
index de813f2..bc69a0c 100644
--- a/channels/chan_dahdi.h
+++ b/channels/chan_dahdi.h
@@ -298,6 +298,12 @@
 	 * \note Set from the "immediate" value read in from chan_dahdi.conf
 	 */
 	unsigned int immediate:1;
+	/*!
+	 * \brief TRUE if audible ringback should be provided
+	 * when immediate = yes.
+	 * \note Set from the "immediatering" value read in from chan_dahdi.conf
+	 */
+	unsigned int immediatering:1;
 	/*! \brief TRUE if in an alarm condition. */
 	unsigned int inalarm:1;
 	/*! \brief TRUE if TDD in MATE mode */
diff --git a/channels/sig_analog.c b/channels/sig_analog.c
index b694a96..cea1e71 100644
--- a/channels/sig_analog.c
+++ b/channels/sig_analog.c
@@ -3779,7 +3779,10 @@
 			if (i->immediate) {
 				analog_set_echocanceller(i, 1);
 				/* The channel is immediately up.  Start right away */
-				res = analog_play_tone(i, ANALOG_SUB_REAL, ANALOG_TONE_RINGTONE);
+				if (i->immediatering) {
+					/* Play fake ringing, if we've been told to... */
+					res = analog_play_tone(i, ANALOG_SUB_REAL, ANALOG_TONE_RINGTONE);
+				}
 				chan = analog_new_ast_channel(i, AST_STATE_RING, 1, ANALOG_SUB_REAL, NULL);
 				if (!chan) {
 					ast_log(LOG_WARNING, "Unable to start PBX on channel %d\n", i->channel);
diff --git a/channels/sig_analog.h b/channels/sig_analog.h
index 7e9acda..e95474f 100644
--- a/channels/sig_analog.h
+++ b/channels/sig_analog.h
@@ -288,6 +288,7 @@
 	unsigned int dahditrcallerid:1;			/*!< should we use the callerid from incoming call on dahdi transfer or not */
 	unsigned int hanguponpolarityswitch:1;
 	unsigned int immediate:1;
+	unsigned int immediatering:1;			/*!< TRUE if ringing should be provided for immediate execution */
 	unsigned int permcallwaiting:1;			/*!< TRUE if call waiting is enabled. (Configured option) */
 	unsigned int permhidecallerid:1;		/*!< Whether to hide our outgoing caller ID or not */
 	unsigned int pulse:1;
diff --git a/configs/samples/chan_dahdi.conf.sample b/configs/samples/chan_dahdi.conf.sample
index 6b29549..1ac0eca 100644
--- a/configs/samples/chan_dahdi.conf.sample
+++ b/configs/samples/chan_dahdi.conf.sample
@@ -948,6 +948,13 @@
 ;
 ;immediate=yes
 ;
+; On FXS channels (FXO signaled), specifies whether fake audible ringback should
+; be provided as soon as the channel goes off hook and immediate=yes.
+; If audio should come only from the dialplan, this option should be disabled.
+; Default is 'yes'
+;
+;immediatering=no
+;
 ; Specify whether flash-hook transfers to 'busy' channels should complete or
 ; return to the caller performing the transfer (default is yes).
 ;
diff --git a/doc/CHANGES-staging/chan_dahdi_immediatering.txt b/doc/CHANGES-staging/chan_dahdi_immediatering.txt
new file mode 100644
index 0000000..fc6c640
--- /dev/null
+++ b/doc/CHANGES-staging/chan_dahdi_immediatering.txt
@@ -0,0 +1,5 @@
+Subject: chan_dahdi
+
+The immediatering option can now be set to no
+to suppress the fake audible ringback provided
+when immediate=yes on FXS channels.

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

Gerrit-Project: asterisk
Gerrit-Branch: master
Gerrit-Change-Id: Idda6e56c30e7efbb6f766366d9752e78f4da3167
Gerrit-Change-Number: 19715
Gerrit-PatchSet: 1
Gerrit-Owner: N A <asterisk at phreaknet.org>
Gerrit-MessageType: newchange
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.digium.com/pipermail/asterisk-code-review/attachments/20221215/73977218/attachment-0001.html>


More information about the asterisk-code-review mailing list