Make PTP DivertingLegInformation3 message behavior closer to the specifications.

*  Wait for a DivertingLegInformation3 message after receiving a
DivertingLegInformation1 message to complete the redirecting-to information
before queuing a redirecting update to the other channel.

*  A DivertingLegInformation2 message should be responded to with a
DivertingLegInformation3 when the COLR is determined.  If the call
could or does experience another redirection, you should manually
determine the COLR to send to the switch by setting REDIRECTING(to-pres)
to the COLR and setting REDIRECTING(to-num) = ${EXTEN}.

*  A DivertingLegInformation2 message must have an original called number
if the redirection count is greater than one.  Since Asterisk does
not keep track of this information, we can only indicate that the
number is not available due to interworking.


git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@190735 65c4cc65-6c06-0410-ace0-fbb531ad65f3
This commit is contained in:
Richard Mudgett
2009-04-27 20:03:49 +00:00
parent b88343b248
commit 89d06c7759
5 changed files with 125 additions and 22 deletions

View File

@@ -49,6 +49,13 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
#include "asterisk/options.h"
#include "asterisk/callerid.h"
/*
* Do not document the REDIRECTING(pres) datatype.
* It has turned out that the from-pres and to-pres values must be kept
* separate. They represent two different parties and there is a case when
* they are active at the same time. The plain pres option will simply
* live on as a historical relic.
*/
/*** DOCUMENTATION
<function name="REDIRECTING" language="en_US">
<synopsis>
@@ -62,11 +69,12 @@ ASTERISK_FILE_VERSION(__FILE__, "$Revision$")
<enum name = "from-num" />
<enum name = "from-name" />
<enum name = "from-ton" />
<enum name = "from-pres" />
<enum name = "to-all" />
<enum name = "to-num" />
<enum name = "to-name" />
<enum name = "to-ton" />
<enum name = "pres" />
<enum name = "to-pres" />
<enum name = "reason" />
<enum name = "count" />
</enumlist>
@@ -323,7 +331,7 @@ static int redirecting_write(struct ast_channel *chan, const char *cmd, char *da
case 'i':
set_it = ast_channel_set_redirecting;
break;
default:
ast_log(LOG_ERROR, "Unknown redirecting option '%s'.\n", option);
return 0;