SWITCH_DECLARE(void) switch_channel_variable_last(switch_channel_t *channel)
{
assert(channel != NULL);
- if (channel->vi) {
- switch_mutex_unlock(channel->profile_mutex);
- channel->vi = 0;
+ if (!channel->vi) {
+ return;
}
+ channel->vi = 0;
+ switch_mutex_unlock(channel->profile_mutex);
+
}
SWITCH_DECLARE(switch_event_header_t *) switch_channel_variable_first(switch_channel_t *channel)
{
+ switch_event_header_t *hi = NULL;
+
assert(channel != NULL);
- if (channel->vi) {
- return NULL;
+ switch_mutex_lock(channel->profile_mutex);
+ if ((hi = channel->variables->headers)) {
+ channel->vi = 1;
+ } else {
+ switch_mutex_unlock(channel->profile_mutex);
}
- switch_mutex_lock(channel->profile_mutex);
- channel->vi = 1;
- return channel->variables->headers;
+ return hi;
}
SWITCH_DECLARE(switch_status_t) switch_channel_set_private(switch_channel_t *channel, const char *key, const void *private_info)
{
assert(channel != NULL);
- switch_mutex_lock(channel->profile_mutex);
switch_core_hash_insert_locked(channel->private_hash, key, private_info, channel->profile_mutex);
- switch_mutex_unlock(channel->profile_mutex);
return SWITCH_STATUS_SUCCESS;
}
{
void *val;
assert(channel != NULL);
- switch_mutex_lock(channel->profile_mutex);
- val = switch_core_hash_find(channel->private_hash, key);
- switch_mutex_unlock(channel->profile_mutex);
+ val = switch_core_hash_find_locked(channel->private_hash, key, channel->profile_mutex);
return val;
}
{
switch_caller_profile_t *profile;
assert(channel != NULL);
-
switch_mutex_lock(channel->profile_mutex);
profile = channel->caller_profile;
switch_mutex_unlock(channel->profile_mutex);
-
return profile;
}