diff options
-rw-r--r-- | channels/chan_zap.c | 43 | ||||
-rwxr-xr-x | configure | 8 | ||||
-rw-r--r-- | configure.ac | 2 |
3 files changed, 33 insertions, 20 deletions
diff --git a/channels/chan_zap.c b/channels/chan_zap.c index 06bb13ad7..0715626b0 100644 --- a/channels/chan_zap.c +++ b/channels/chan_zap.c @@ -6866,6 +6866,24 @@ static void *ss_thread(void *data) 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; @@ -7056,6 +7074,12 @@ static int handle_init_event(struct zt_pvt *i, int event) "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; @@ -10627,25 +10651,14 @@ static struct ast_cli_entry zap_pri_cli[] = { 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); @@ -1,5 +1,5 @@ #! /bin/sh -# From configure.ac Revision: 55077 . +# From configure.ac Revision: 57557 . # Guess values for system-dependent variables and create Makefiles. # Generated by GNU Autoconf 2.60. # @@ -35963,8 +35963,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext # Check for VLDTMF support if test "x${PBX_ZAPTEL_VLDTMF}" != "x1" -a "${USE_ZAPTEL_VLDTMF}" != "no"; 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_VLDTMF_DIR}" != "x"; then ZAPTEL_VLDTMF_INCLUDE= "-I${ZAPTEL_VLDTMF_DIR}/include" @@ -35981,7 +35981,7 @@ cat >>conftest.$ac_ext <<_ACEOF int main () { -int foo = ZT_TONE_DTMF_BASE; +int foo = ZT_EVENT_REMOVED; ; return 0; } diff --git a/configure.ac b/configure.ac index 721f7c709..2039153c0 100644 --- a/configure.ac +++ b/configure.ac @@ -923,7 +923,7 @@ AST_C_DEFINE_CHECK([ZAPTEL], [ZT_TONE_DTMF_BASE], [zaptel/zaptel.h], [140]) AST_C_DEFINE_CHECK([ZAPTEL], [ZT_DIAL_OP_CANCEL], [zaptel/zaptel.h], [90]) # Check for VLDTMF support -AST_C_DEFINE_CHECK([ZAPTEL_VLDTMF], [ZT_TONE_DTMF_BASE], [zaptel/zaptel.h]) +AST_C_DEFINE_CHECK([ZAPTEL_VLDTMF], [ZT_EVENT_REMOVED], [zaptel/zaptel.h]) # Check for transcode support AST_C_DEFINE_CHECK([ZAPTEL_TRANSCODE], [ZT_TCOP_ALLOCATE], [zaptel/zaptel.h]) |