|
|
|
@ -4811,8 +4811,12 @@ int call_delete_branch(call_t *c, const str *branch, |
|
|
|
ml->term_reason = REGULAR; |
|
|
|
} |
|
|
|
|
|
|
|
if (!fromtag || !fromtag->len) |
|
|
|
if (!fromtag || !fromtag->len) { |
|
|
|
if (output) |
|
|
|
ng_call_stats(c, fromtag, totag, output, NULL); |
|
|
|
|
|
|
|
goto del_all; |
|
|
|
} |
|
|
|
|
|
|
|
if ((!totag || !totag->len) && branch && branch->len) { |
|
|
|
// try a via-branch match |
|
|
|
@ -4859,6 +4863,9 @@ int call_delete_branch(call_t *c, const str *branch, |
|
|
|
do_delete: |
|
|
|
c->destroyed = rtpe_now; |
|
|
|
|
|
|
|
if (output) |
|
|
|
ng_call_stats(c, fromtag, totag, output, NULL); |
|
|
|
|
|
|
|
/* stop media player and all medias of ml. |
|
|
|
* same for media subscribers */ |
|
|
|
monologue_stop(ml, true); |
|
|
|
@ -4876,15 +4883,9 @@ do_delete: |
|
|
|
if (!del_stop) |
|
|
|
goto del_all; |
|
|
|
|
|
|
|
if (output) |
|
|
|
ng_call_stats(c, fromtag, totag, output, NULL); |
|
|
|
|
|
|
|
goto success_unlock; |
|
|
|
|
|
|
|
del_all: |
|
|
|
if (output) |
|
|
|
ng_call_stats(c, fromtag, totag, output, NULL); |
|
|
|
|
|
|
|
for (__auto_type i = c->monologues.head; i; i = i->next) { |
|
|
|
ml = i->data; |
|
|
|
monologue_stop(ml, false); |
|
|
|
|