Skip to content

Commit

Permalink
http_async_client: do not set global avp lists from t on async callback
Browse files Browse the repository at this point in the history
- 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 1bc3bbd)
  • Loading branch information
miconda authored and grumvalski committed Apr 20, 2020
1 parent 44ccb90 commit ff48cc5
Showing 1 changed file with 4 additions and 10 deletions.
14 changes: 4 additions & 10 deletions src/modules/http_async_client/async_http.c
Expand Up @@ -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();
Expand All @@ -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);

Expand Down

0 comments on commit ff48cc5

Please sign in to comment.