http_async_client: do not set global avp lists from t on async callback
authorDaniel-Constantin Mierla <miconda@gmail.com>
Fri, 17 Apr 2020 17:04:16 +0000 (19:04 +0200)
committerDaniel-Constantin Mierla <miconda@gmail.com>
Fri, 17 Apr 2020 17:04:16 +0000 (19:04 +0200)
- 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

src/modules/http_async_client/async_http.c

index e468a95..5edf67e 100644 (file)
@@ -212,7 +212,7 @@ void async_http_cb(struct http_m_reply *reply, void *param)
        }
 
        strncpy(q_id, aq->id, strlen(aq->id));
        }
 
        strncpy(q_id, aq->id, strlen(aq->id));
-       
+
        q_id[strlen(aq->id)] = '\0';
 
        cfg_update();
        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;
                }
                        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);
                        tmb.unref_cell(t);
+               }
 
                LM_DBG("resuming transaction (%d:%d)\n", tindex, tlabel);
 
 
                LM_DBG("resuming transaction (%d:%d)\n", tindex, tlabel);