[asterisk-commits] russell: branch 1.4 r58320 - in /branches/1.4: ./ channels/

asterisk-commits at lists.digium.com asterisk-commits at lists.digium.com
Wed Mar 7 18:01:46 MST 2007


Author: russell
Date: Wed Mar  7 19:01:46 2007
New Revision: 58320

URL: http://svn.digium.com/view/asterisk?view=rev&rev=58320
Log:
If we receive ZT_EVENT_REMOVED, destroy the specified channel. 
(issue #7256, tzafrir)

Also, update the configure script to make sure that we don't try to build 
chan_zap if the installed version of zaptel does not include ZT_EVENT_REMOVED.

Modified:
    branches/1.4/channels/chan_zap.c
    branches/1.4/configure
    branches/1.4/configure.ac

Modified: branches/1.4/channels/chan_zap.c
URL: http://svn.digium.com/view/asterisk/branches/1.4/channels/chan_zap.c?view=diff&rev=58320&r1=58319&r2=58320
==============================================================================
--- branches/1.4/channels/chan_zap.c (original)
+++ branches/1.4/channels/chan_zap.c Wed Mar  7 19:01:46 2007
@@ -6496,6 +6496,24 @@
 	return NULL;
 }
 
+/* destroy a zaptel channel, identified by its number */
+static int zap_destroy_channel_bynum(int channel)
+{
+	struct zt_pvt *tmp = NULL;
+	struct zt_pvt *prev = NULL;
+
+	tmp = iflist;
+	while (tmp) {
+		if (tmp->channel == channel) {
+			destroy_channel(prev, tmp, 1);
+			return RESULT_SUCCESS;
+		}
+		prev = tmp;
+		tmp = tmp->next;
+	}
+	return RESULT_FAILURE;
+}
+
 static int handle_init_event(struct zt_pvt *i, int event)
 {
 	int res;
@@ -6685,6 +6703,12 @@
 				"polarity reversal on non-FXO (SIG_FXS) "
 				"interface %d\n", i->channel);
 		}
+	case ZT_EVENT_REMOVED: /* destroy channel */
+		ast_log(LOG_NOTICE, 
+				"Got ZT_EVENT_REMOVED. Destroying channel %d\n", 
+				i->channel);
+		zap_destroy_channel_bynum(i->channel);
+		break;
 	}
 	pthread_attr_destroy(&attr);
 	return 0;
@@ -9670,25 +9694,14 @@
 
 static int zap_destroy_channel(int fd, int argc, char **argv)
 {
-	int channel = 0;
-	struct zt_pvt *tmp = NULL;
-	struct zt_pvt *prev = NULL;
+	int channel;
 	
-	if (argc != 4) {
+	if (argc != 4)
 		return RESULT_SHOWUSAGE;
-	}
+	
 	channel = atoi(argv[3]);
 
-	tmp = iflist;
-	while (tmp) {
-		if (tmp->channel == channel) {
-			destroy_channel(prev, tmp, 1);
-			return RESULT_SUCCESS;
-		}
-		prev = tmp;
-		tmp = tmp->next;
-	}
-	return RESULT_FAILURE;
+	return zap_destroy_channel_bynum(channel);
 }
 
 static int setup_zap(int reload);

Modified: branches/1.4/configure
URL: http://svn.digium.com/view/asterisk/branches/1.4/configure?view=diff&rev=58320&r1=58319&r2=58320
==============================================================================
--- branches/1.4/configure (original)
+++ branches/1.4/configure Wed Mar  7 19:01:46 2007
@@ -1,5 +1,5 @@
 #! /bin/sh
-# From configure.ac Revision: 55052 .
+# From configure.ac Revision: 57556 .
 # Guess values for system-dependent variables and create Makefiles.
 # Generated by GNU Autoconf 2.60.
 #
@@ -33328,8 +33328,8 @@
 fi
 
 if test "${PBX_ZAPTEL}" = 1; then
-   { echo "$as_me:$LINENO: checking for ZT_TONE_DTMF_BASE in zaptel/zaptel.h" >&5
-echo $ECHO_N "checking for ZT_TONE_DTMF_BASE in zaptel/zaptel.h... $ECHO_C" >&6; }
+   { echo "$as_me:$LINENO: checking for ZT_EVENT_REMOVED in zaptel/zaptel.h" >&5
+echo $ECHO_N "checking for ZT_EVENT_REMOVED in zaptel/zaptel.h... $ECHO_C" >&6; }
    saved_cppflags="${CPPFLAGS}"
    if test "x${ZAPTEL_DIR}" != "x"; then
       CPPFLAGS="${CPPFLAGS} -I${ZAPTEL_DIR}/include"
@@ -33345,7 +33345,7 @@
 int
 main ()
 {
-int foo = ZT_TONE_DTMF_BASE;
+int foo = ZT_EVENT_REMOVED;
   ;
   return 0;
 }

Modified: branches/1.4/configure.ac
URL: http://svn.digium.com/view/asterisk/branches/1.4/configure.ac?view=diff&rev=58320&r1=58319&r2=58320
==============================================================================
--- branches/1.4/configure.ac (original)
+++ branches/1.4/configure.ac Wed Mar  7 19:01:46 2007
@@ -1026,7 +1026,7 @@
 fi
 
 if test "${PBX_ZAPTEL}" = 1; then
-   AC_MSG_CHECKING(for ZT_TONE_DTMF_BASE in zaptel/zaptel.h)
+   AC_MSG_CHECKING(for ZT_EVENT_REMOVED in zaptel/zaptel.h)
    saved_cppflags="${CPPFLAGS}"
    if test "x${ZAPTEL_DIR}" != "x"; then
       CPPFLAGS="${CPPFLAGS} -I${ZAPTEL_DIR}/include"
@@ -1035,7 +1035,7 @@
 	[
 	AC_LANG_PROGRAM(
 	[#include <zaptel/zaptel.h>],
-	[int foo = ZT_TONE_DTMF_BASE;])
+	[int foo = ZT_EVENT_REMOVED;])
 	],
 	[	AC_MSG_RESULT(yes) 
 		ac_cv_zaptel_vldtmf="yes" 



More information about the asterisk-commits mailing list