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);
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)
/*!
* \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
*