[svn-commits] rmudgett: trunk r190517 - in /trunk: channels/ funcs/

SVN commits to the Digium repositories svn-commits at lists.digium.com
Fri Apr 24 12:59:04 CDT 2009


Author: rmudgett
Date: Fri Apr 24 12:59:01 2009
New Revision: 190517

URL: http://svn.digium.com/svn-view/asterisk?view=rev&rev=190517
Log:
There is no need to use the struct ast_party_connected_line.source update values.

The messages sent by a technology when a connected line update is received
are best determined by the current call state of the channel.  The struct
ast_party_connected_line.source value is really only useful as a possible
tracing aid.

Modified:
    trunk/channels/chan_misdn.c
    trunk/funcs/func_connectedline.c

Modified: trunk/channels/chan_misdn.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/channels/chan_misdn.c?view=diff&rev=190517&r1=190516&r2=190517
==============================================================================
--- trunk/channels/chan_misdn.c (original)
+++ trunk/channels/chan_misdn.c Fri Apr 24 12:59:01 2009
@@ -6041,7 +6041,6 @@
  */
 static void misdn_update_connected_line(struct ast_channel *ast, struct misdn_bchannel *bc, int originator)
 {
-	int Is_PTMP;
 	struct chan_list *ch;
 
 	misdn_get_connected_line(ast, bc, originator);
@@ -6051,51 +6050,23 @@
 		bc->redirecting.to = bc->caller;
 	}
 
-	Is_PTMP = !misdn_lib_is_ptp(bc->port);
-	switch (ast->connected.source) {
-	case AST_CONNECTED_LINE_UPDATE_SOURCE_TRANSFER:
-	case AST_CONNECTED_LINE_UPDATE_SOURCE_ANSWER:
-		ch = MISDN_ASTERISK_TECH_PVT(ast);
-		if (ch->state == MISDN_CONNECTED
-			|| originator != ORG_MISDN) {
-			if (Is_PTMP) {
-				/* Send NOTIFY(transfer-active, redirecting.to data) */
-				bc->redirecting.to_changed = 1;
-				bc->notify_description_code = mISDN_NOTIFY_CODE_CALL_TRANSFER_ACTIVE;
-				misdn_lib_send_event(bc, EVENT_NOTIFY);
-#if defined(AST_MISDN_ENHANCEMENTS)
-			} else {
-				/* Send EctInform(transfer-active, redirecting.to data) */
-				bc->fac_out.Function = Fac_EctInform;
-				bc->fac_out.u.EctInform.InvokeID = ++misdn_invoke_id;
-				bc->fac_out.u.EctInform.Status = 1;/* active */
-				if (bc->redirecting.to.number[0]) {
-					misdn_PresentedNumberUnscreened_fill(&bc->fac_out.u.EctInform.Redirection,
-						&bc->redirecting.to);
-					bc->fac_out.u.EctInform.RedirectionPresent = 1;
-				} else {
-					bc->fac_out.u.EctInform.RedirectionPresent = 0;
-				}
-
-				/* Send message */
-				print_facility(&bc->fac_out, bc);
-				misdn_lib_send_event(bc, EVENT_FACILITY);
-#endif	/* defined(AST_MISDN_ENHANCEMENTS) */
-			}
-		}
-		break;
-	case AST_CONNECTED_LINE_UPDATE_SOURCE_TRANSFER_ALERTING:
-		if (Is_PTMP) {
-			/* Send NOTIFY(transfer-alerting, redirecting.to data) */
+	ch = MISDN_ASTERISK_TECH_PVT(ast);
+	if (ch->state == MISDN_CONNECTED
+		|| originator != ORG_MISDN) {
+		int is_ptmp;
+
+		is_ptmp = !misdn_lib_is_ptp(bc->port);
+		if (is_ptmp) {
+			/* Send NOTIFY(transfer-active, redirecting.to data) */
 			bc->redirecting.to_changed = 1;
-			bc->notify_description_code = mISDN_NOTIFY_CODE_CALL_TRANSFER_ALERTING;
+			bc->notify_description_code = mISDN_NOTIFY_CODE_CALL_TRANSFER_ACTIVE;
 			misdn_lib_send_event(bc, EVENT_NOTIFY);
 #if defined(AST_MISDN_ENHANCEMENTS)
 		} else {
-			/* Send EctInform(transfer-alerting, redirecting.to data) */
+			/* Send EctInform(transfer-active, redirecting.to data) */
 			bc->fac_out.Function = Fac_EctInform;
 			bc->fac_out.u.EctInform.InvokeID = ++misdn_invoke_id;
-			bc->fac_out.u.EctInform.Status = 0;/* alerting */
+			bc->fac_out.u.EctInform.Status = 1;/* active */
 			if (bc->redirecting.to.number[0]) {
 				misdn_PresentedNumberUnscreened_fill(&bc->fac_out.u.EctInform.Redirection,
 					&bc->redirecting.to);
@@ -6103,13 +6074,12 @@
 			} else {
 				bc->fac_out.u.EctInform.RedirectionPresent = 0;
 			}
+
+			/* Send message */
 			print_facility(&bc->fac_out, bc);
 			misdn_lib_send_event(bc, EVENT_FACILITY);
 #endif	/* defined(AST_MISDN_ENHANCEMENTS) */
 		}
-		break;
-	default:
-		break;
 	}
 }
 
@@ -8829,6 +8799,15 @@
 			misdn_add_number_prefix(bc->port, party_id.number_type,
 				party_id.number, sizeof(party_id.number));
 
+			/*
+			 * It would be preferable to update the connected line information
+			 * only when the message callStatus is active.  However, the
+			 * optional redirection number may not be present in the active
+			 * message if an alerting message were received earlier.
+			 *
+			 * The consequences if we wind up sending two updates is benign.
+			 * The other end will think that it got transferred twice.
+			 */
 			misdn_queue_connected_line_update(ch->ast, &party_id,
 				(bc->fac_in.u.EctInform.Status == 0 /* alerting */)
 					? AST_CONNECTED_LINE_UPDATE_SOURCE_TRANSFER_ALERTING
@@ -10220,6 +10199,15 @@
 			}
 			break;
 		case mISDN_NOTIFY_CODE_CALL_TRANSFER_ALERTING:
+			/*
+			 * It would be preferable to update the connected line information
+			 * only when the message callStatus is active.  However, the
+			 * optional redirection number may not be present in the active
+			 * message if an alerting message were received earlier.
+			 *
+			 * The consequences if we wind up sending two updates is benign.
+			 * The other end will think that it got transferred twice.
+			 */
 			if (bc->redirecting.to_changed) {
 				bc->redirecting.to_changed = 0;
 				if (ch && ch->ast) {

Modified: trunk/funcs/func_connectedline.c
URL: http://svn.digium.com/svn-view/asterisk/trunk/funcs/func_connectedline.c?view=diff&rev=190517&r1=190516&r2=190517
==============================================================================
--- trunk/funcs/func_connectedline.c (original)
+++ trunk/funcs/func_connectedline.c Fri Apr 24 12:59:01 2009
@@ -19,7 +19,7 @@
 /*! \file
  *
  * \brief Connected Line dialplan function
- * 
+ *
  * \ingroup functions
  */
 
@@ -41,6 +41,11 @@
 #include "asterisk/options.h"
 #include "asterisk/callerid.h"
 
+/*
+ * Do not document the CONNECTEDLINE(source) datatype.
+ * It has turned out to not be needed.  The source value is really                                      .
+ * only useful as a possible tracing aid.
+ */
 /*** DOCUMENTATION
 	<function name="CONNECTEDLINE" language="en_US">
 		<synopsis>
@@ -55,7 +60,6 @@
 					<enum name = "name" />
 					<enum name = "ton" />
 					<enum name = "pres" />
-					<enum name = "source" />
 				</enumlist>
 			</parameter>
 			<parameter name="i">
@@ -64,13 +68,7 @@
 			</parameter>
 		</syntax>
 		<description>
-			<para>Gets or sets Connected Line data on the channel. Possible values
-			for the <replaceable>source</replaceable> datatype are:</para>
-			<enumlist>
-				<enum name="answer"><para>Normal Call Answering</para></enum>
-				<enum name="transfer_alerting"><para>Call Transfer(Alerting)</para></enum>
-				<enum name="transfer_active"><para>Call Transfer(Active)</para></enum>
-			</enumlist>
+			<para>Gets or sets Connected Line data on the channel.</para>
 		</description>
 	</function>
  ***/
@@ -133,7 +131,7 @@
 		case 'i':
 			set_it = ast_channel_set_connected_line;
 			break;
-		
+
 		default:
 			ast_log(LOG_ERROR, "Unknown connectedline option '%s'.\n", option);
 			return 0;
@@ -161,7 +159,7 @@
 		connected.id.name = ast_strdupa(value);
 		ast_trim_blanks(connected.id.name);
 		set_it(chan, &connected);
-	} else if (!strncasecmp("num", data, 3)) { 
+	} else if (!strncasecmp("num", data, 3)) {
 		connected.id.number = ast_strdupa(value);
 		ast_trim_blanks(connected.id.number);
 		set_it(chan, &connected);




More information about the svn-commits mailing list