summaryrefslogtreecommitdiff
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
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
-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;
}