Module: kamailio Branch: 5.2 Commit: b6f40ec3016961d9e2f97b40bc6a05c752780b4f URL: https://github.com/kamailio/kamailio/commit/b6f40ec3016961d9e2f97b40bc6a05c7...
Author: Daniel-Constantin Mierla miconda@gmail.com Committer: Federico Cabiddu federico.cabiddu@gmail.com Date: 2020-04-20T09:51:59+02:00
http_async_client: do not set global avp lists from t on async callback
- they are done by fake_env() used inside t_continue() - they were set without reset, living in the process context, resulting in invalid access when async callback was executed with faked_msg - related to #2286
(cherry picked from commit 1bc3bbd010705ee247345c1ed9b36210bb8d9ed1)
---
Modified: src/modules/http_async_client/async_http.c
---
Diff: https://github.com/kamailio/kamailio/commit/b6f40ec3016961d9e2f97b40bc6a05c7... Patch: https://github.com/kamailio/kamailio/commit/b6f40ec3016961d9e2f97b40bc6a05c7...
---
diff --git a/src/modules/http_async_client/async_http.c b/src/modules/http_async_client/async_http.c index c459d564a8..2aa6681a7d 100644 --- a/src/modules/http_async_client/async_http.c +++ b/src/modules/http_async_client/async_http.c @@ -212,7 +212,7 @@ void async_http_cb(struct http_m_reply *reply, void *param) }
strncpy(q_id, aq->id, strlen(aq->id)); - + q_id[strlen(aq->id)] = '\0';
cfg_update(); @@ -227,16 +227,10 @@ void async_http_cb(struct http_m_reply *reply, void *param) free_async_query(aq); return; } - // we bring the list of AVPs of the transaction to the current context - set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI, &t->uri_avps_from); - set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI, &t->uri_avps_to); - set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER, &t->user_avps_from); - set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER, &t->user_avps_to); - set_avp_list(AVP_TRACK_FROM | AVP_CLASS_DOMAIN, &t->domain_avps_from); - set_avp_list(AVP_TRACK_TO | AVP_CLASS_DOMAIN, &t->domain_avps_to); - - if (t) + + if (t) { tmb.unref_cell(t); + }
LM_DBG("resuming transaction (%d:%d)\n", tindex, tlabel);