mirror of
				https://github.com/asterisk/asterisk.git
				synced 2025-11-03 20:38:59 +00:00 
			
		
		
		
	Merge "Dialplan functions: Fix some channel autoservice misuse." into 13
This commit is contained in:
		@@ -636,16 +636,16 @@ static int acf_curl_helper(struct ast_channel *chan, const char *cmd, char *info
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (chan) {
 | 
			
		||||
		ast_autoservice_start(chan);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (!(curl = ast_threadstorage_get(&curl_instance, sizeof(*curl)))) {
 | 
			
		||||
		ast_log(LOG_ERROR, "Cannot allocate curl structure\n");
 | 
			
		||||
		ast_free(str);
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (chan) {
 | 
			
		||||
		ast_autoservice_start(chan);
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	AST_LIST_LOCK(&global_curl_info);
 | 
			
		||||
	AST_LIST_TRAVERSE(&global_curl_info, cur, list) {
 | 
			
		||||
		if (cur->key == CURLOPT_SPECIAL_HASHCOMPAT) {
 | 
			
		||||
@@ -656,14 +656,19 @@ static int acf_curl_helper(struct ast_channel *chan, const char *cmd, char *info
 | 
			
		||||
	}
 | 
			
		||||
	AST_LIST_UNLOCK(&global_curl_info);
 | 
			
		||||
 | 
			
		||||
	if (chan && (store = ast_channel_datastore_find(chan, &curl_info, NULL))) {
 | 
			
		||||
		list = store->data;
 | 
			
		||||
		AST_LIST_LOCK(list);
 | 
			
		||||
		AST_LIST_TRAVERSE(list, cur, list) {
 | 
			
		||||
			if (cur->key == CURLOPT_SPECIAL_HASHCOMPAT) {
 | 
			
		||||
				hashcompat = (long) cur->value;
 | 
			
		||||
			} else {
 | 
			
		||||
				curl_easy_setopt(*curl, cur->key, cur->value);
 | 
			
		||||
	if (chan) {
 | 
			
		||||
		ast_channel_lock(chan);
 | 
			
		||||
		store = ast_channel_datastore_find(chan, &curl_info, NULL);
 | 
			
		||||
		ast_channel_unlock(chan);
 | 
			
		||||
		if (store) {
 | 
			
		||||
			list = store->data;
 | 
			
		||||
			AST_LIST_LOCK(list);
 | 
			
		||||
			AST_LIST_TRAVERSE(list, cur, list) {
 | 
			
		||||
				if (cur->key == CURLOPT_SPECIAL_HASHCOMPAT) {
 | 
			
		||||
					hashcompat = (long) cur->value;
 | 
			
		||||
				} else {
 | 
			
		||||
					curl_easy_setopt(*curl, cur->key, cur->value);
 | 
			
		||||
				}
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
 
 | 
			
		||||
@@ -227,6 +227,9 @@ static int function_realtime_read(struct ast_channel *chan, const char *cmd, cha
 | 
			
		||||
 | 
			
		||||
	if (resultslen > len) {
 | 
			
		||||
		ast_log(LOG_WARNING, "Failed to fetch. Realtime data is too large: need %zu, have %zu.\n", resultslen, len);
 | 
			
		||||
		if (chan) {
 | 
			
		||||
			ast_autoservice_stop(chan);
 | 
			
		||||
		}
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
@@ -460,6 +463,9 @@ static int function_realtime_readdestroy(struct ast_channel *chan, const char *c
 | 
			
		||||
			 * someones data without giving him the chance to look
 | 
			
		||||
			 * at it. */
 | 
			
		||||
			ast_log(LOG_WARNING, "Failed to fetch/destroy. Realtime data is too large: need %zu, have %zu.\n", resultslen, len);
 | 
			
		||||
			if (chan) {
 | 
			
		||||
				ast_autoservice_stop(chan);
 | 
			
		||||
			}
 | 
			
		||||
			return -1;
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
@@ -942,10 +942,6 @@ int ast_get_txt(struct ast_channel *chan, const char *number, char *txt, int txt
 | 
			
		||||
 | 
			
		||||
	ast_debug(4, "ast_get_txt: Number = '%s', suffix = '%s'\n", number, suffix);
 | 
			
		||||
 | 
			
		||||
	if (chan && ast_autoservice_start(chan) < 0) {
 | 
			
		||||
		return -1;
 | 
			
		||||
	}
 | 
			
		||||
 | 
			
		||||
	if (pos > 128) {
 | 
			
		||||
		pos = 128;
 | 
			
		||||
	}
 | 
			
		||||
@@ -966,9 +962,6 @@ int ast_get_txt(struct ast_channel *chan, const char *number, char *txt, int txt
 | 
			
		||||
	} else {
 | 
			
		||||
		ast_copy_string(txt, context.txt, txtlen);
 | 
			
		||||
	}
 | 
			
		||||
	if (chan) {
 | 
			
		||||
		ret |= ast_autoservice_stop(chan);
 | 
			
		||||
	}
 | 
			
		||||
	return ret;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user