From ab88afafb82037c818656a354f58d433b4098829 Mon Sep 17 00:00:00 2001 From: Moises Silva Date: Tue, 25 May 2010 16:06:42 -0400 Subject: [PATCH] freetdm: stop just once --- libs/freetdm/src/ftdm_io.c | 12 +++++------- libs/freetdm/src/include/freetdm.h | 3 +++ 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/libs/freetdm/src/ftdm_io.c b/libs/freetdm/src/ftdm_io.c index 5371946993..f6ba9af848 100644 --- a/libs/freetdm/src/ftdm_io.c +++ b/libs/freetdm/src/ftdm_io.c @@ -414,9 +414,7 @@ static ftdm_status_t ftdm_span_destroy(ftdm_span_t *span) ftdm_mutex_lock(span->mutex); /* stop the signaling */ - if (span->stop) { - status = span->stop(span); - } + ftdm_span_stop(span); /* destroy the channels */ ftdm_clear_flag(span, FTDM_SPAN_CONFIGURED); @@ -514,12 +512,12 @@ static void ftdm_span_add(ftdm_span_t *span) FT_DECLARE(ftdm_status_t) ftdm_span_stop(ftdm_span_t *span) { + ftdm_status_t status = FTDM_FAIL; if (span->stop) { - span->stop(span); - return FTDM_SUCCESS; + status = span->stop(span); + span->stop = NULL; } - - return FTDM_FAIL; + return status; } FT_DECLARE(ftdm_status_t) ftdm_span_create(const char *iotype, const char *name, ftdm_span_t **span) diff --git a/libs/freetdm/src/include/freetdm.h b/libs/freetdm/src/include/freetdm.h index 495e3cdc40..4cc9fd244e 100644 --- a/libs/freetdm/src/include/freetdm.h +++ b/libs/freetdm/src/include/freetdm.h @@ -1125,6 +1125,9 @@ FT_DECLARE(ftdm_status_t) ftdm_span_start(ftdm_span_t *span); /*! * \brief Stop the span signaling (must call ftdm_span_start first) + * \note certain signalings (boost signaling) does not support granular span start/stop + * so it is recommended to always configure all spans and then starting them all and finally + * stop them all (or call ftdm_global_destroy which takes care of stopping and destroying the spans at once). * * \param span The span to stop *