summaryrefslogtreecommitdiff
path: root/funcs/func_global.c
diff options
context:
space:
mode:
authorRussell Bryant <russell@russellbryant.com>2008-03-05 00:45:39 +0000
committerRussell Bryant <russell@russellbryant.com>2008-03-05 00:45:39 +0000
commit39b9f810163ea0c25e78f98907f28563ccbae277 (patch)
treee9a44da76325eca5e3b076598d0c0f942ba23780 /funcs/func_global.c
parent6cf605940252204bd74d4b0cf88d1ccb16fd7eb1 (diff)
Fix the SHARED() read callback to properly unlock the channel. This function
could not have worked, as it left the channel locked in all cases. git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@105899 65c4cc65-6c06-0410-ace0-fbb531ad65f3
Diffstat (limited to 'funcs/func_global.c')
-rw-r--r--funcs/func_global.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/funcs/func_global.c b/funcs/func_global.c
index 1f88d0017..d97379ce9 100644
--- a/funcs/func_global.c
+++ b/funcs/func_global.c
@@ -109,8 +109,11 @@ static int shared_read(struct ast_channel *chan, const char *cmd, char *data, ch
} else
ast_channel_lock(chan);
- if (!(varstore = ast_channel_datastore_find(chan, &shared_variable_info, NULL)))
+ if (!(varstore = ast_channel_datastore_find(chan, &shared_variable_info, NULL))) {
+ ast_channel_unlock(chan);
return -1;
+ }
+
varshead = varstore->data;
*buf = '\0';
@@ -122,6 +125,8 @@ static int shared_read(struct ast_channel *chan, const char *cmd, char *data, ch
}
}
+ ast_channel_unlock(chan);
+
return 0;
}