[asterisk-commits] mmichelson: branch group/CCSS r222313 - /team/group/CCSS/apps/app_dial.c
SVN commits to the Asterisk project
asterisk-commits at lists.digium.com
Tue Oct 6 15:17:10 CDT 2009
Author: mmichelson
Date: Tue Oct 6 15:17:07 2009
New Revision: 222313
URL: http://svnview.digium.com/svn/asterisk?view=rev&rev=222313
Log:
Add TODO item to app_dial.
It's not so vital to take care of since only generic
agents and monitors are currently supported. It can and
will be a problem once native agent code starts getting
written.
Modified:
team/group/CCSS/apps/app_dial.c
Modified: team/group/CCSS/apps/app_dial.c
URL: http://svnview.digium.com/svn/asterisk/team/group/CCSS/apps/app_dial.c?view=diff&rev=222313&r1=222312&r2=222313
==============================================================================
--- team/group/CCSS/apps/app_dial.c (original)
+++ team/group/CCSS/apps/app_dial.c Tue Oct 6 15:17:07 2009
@@ -1083,6 +1083,30 @@
handle_cause(AST_CAUSE_CONGESTION, &num);
break;
case AST_CONTROL_RINGING:
+ /* XXX TODO This is a tricky area to get right when using a native
+ * CC agent. The reason is that we do the best we can to send only a
+ * single ringing notification to the caller. The logic here now will
+ * send the first ringing notification to the caller and drop all
+ * others.
+ *
+ * This may not work so well when CC is involved. CCNR is typically
+ * offered during a ringing message. Let's say that party A calls
+ * parties B, C, and D. B and C do not support CC requests, but D
+ * does. If we were to receive a ringing notification from B before
+ * the others, then we would end up sending a ringing message to
+ * A with no CCNR offer present.
+ *
+ * The approach that should be taken is that if we receive a ringing
+ * response from a party and no CCNR offer is present, we need to
+ * wait. Specifically, we need to wait until either a) a called party
+ * offers CCNR in its ringing response or b) all called parties have
+ * responded in some way to our call and none offers CCNR.
+ *
+ * The drawback to this is that if one of the parties has a delayed
+ * response or, god forbid, one just plain doesn't respond to our
+ * outgoing call, then this will result in a significant delay between
+ * when the caller places the call and hears ringback.
+ */
ast_verb(3, "%s is ringing\n", c->name);
/* Setup early media if appropriate */
if (single && CAN_EARLY_BRIDGE(peerflags, in, c))
More information about the asterisk-commits
mailing list