diff --git a/channels/chan_unistim.c b/channels/chan_unistim.c index 51f811c025..82b3fced9f 100644 --- a/channels/chan_unistim.c +++ b/channels/chan_unistim.c @@ -6399,6 +6399,7 @@ static void delete_device(struct unistim_device *d) { struct unistim_line *l; struct unistim_subchannel *sub; + struct unistimsession *s; if (unistimdebug) { ast_verb(0, "Removing device '%s'\n", d->name); @@ -6406,25 +6407,20 @@ static void delete_device(struct unistim_device *d) AST_LIST_LOCK(&d->subs); AST_LIST_TRAVERSE_SAFE_BEGIN(&d->subs, sub, list){ if (sub->subtype == SUB_REAL) { - if (!sub) { - ast_log(LOG_ERROR, "Device '%s' without a subchannel !, aborting\n", - d->name); - ast_config_destroy(cfg); - return 0; - } if (sub->owner) { ast_log(LOG_WARNING, "Device '%s' was not deleted : a call is in progress. Try again later.\n", d->name); - d = d->next; - continue; + AST_LIST_UNLOCK(&d->subs); + return; } } if (sub->subtype == SUB_THREEWAY) { ast_log(LOG_WARNING, "Device '%s' with threeway call subchannels allocated, aborting.\n", d->name); - break; + AST_LIST_UNLOCK(&d->subs); + return; } AST_LIST_REMOVE_CURRENT(list); ast_mutex_destroy(&sub->lock);