summaryrefslogtreecommitdiff
path: root/pbx.c
diff options
context:
space:
mode:
authorMartin Pycko <martinp@digium.com>2003-07-14 17:17:05 +0000
committerMartin Pycko <martinp@digium.com>2003-07-14 17:17:05 +0000
commit1521e09083573f423a9376a8c04d98fc0ac11920 (patch)
tree3ef5fd08664045d2be2376aef061b98130f67662 /pbx.c
parentf4341a13d0ec2ff8c0e0e83fff59fbbd1b487f95 (diff)
pbx.c didn't get updated
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@1188 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'pbx.c')
-rwxr-xr-xpbx.c18
1 files changed, 13 insertions, 5 deletions
diff --git a/pbx.c b/pbx.c
index ce547edd5..903476241 100755
--- a/pbx.c
+++ b/pbx.c
@@ -2741,14 +2741,22 @@ struct ast_context *ast_context_create(struct ast_context **extcontexts, char *n
void __ast_context_destroy(struct ast_context *con, char *registrar, int lock);
-void ast_merge_contexts_and_delete(struct ast_context **extcontexts) {
+void ast_merge_contexts_and_delete(struct ast_context **extcontexts, char *registrar) {
struct ast_context *tmp, *lasttmp = NULL;
tmp = *extcontexts;
ast_pthread_mutex_lock(&conlock);
- while (tmp) {
- __ast_context_destroy(tmp,tmp->registrar,0);
- lasttmp = tmp;
- tmp = tmp->next;
+ if (registrar) {
+ __ast_context_destroy(NULL,registrar,0);
+ while (tmp) {
+ lasttmp = tmp;
+ tmp = tmp->next;
+ }
+ } else {
+ while (tmp) {
+ __ast_context_destroy(tmp,tmp->registrar,0);
+ lasttmp = tmp;
+ tmp = tmp->next;
+ }
}
if (lasttmp) {
lasttmp->next = contexts;