[sr-dev] git:5.2:b6f40ec3: http_async_client: do not set global avp lists from t on async callback

Federico Cabiddu federico.cabiddu at gmail.com
Mon Apr 20 09:52:29 CEST 2020


Module: kamailio
Branch: 5.2
Commit: b6f40ec3016961d9e2f97b40bc6a05c752780b4f
URL: https://github.com/kamailio/kamailio/commit/b6f40ec3016961d9e2f97b40bc6a05c752780b4f

Author: Daniel-Constantin Mierla <miconda at gmail.com>
Committer: Federico Cabiddu <federico.cabiddu at 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/b6f40ec3016961d9e2f97b40bc6a05c752780b4f.diff
Patch: https://github.com/kamailio/kamailio/commit/b6f40ec3016961d9e2f97b40bc6a05c752780b4f.patch

---

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);
 




More information about the sr-dev mailing list