I think I found something that could have been caused the issue, respectively setting the
AVPs lists from transaction in the process context inside the http async callback
function. It was done for the case when transaction was suspended and no cleaned up,
living further in the context of the process and when the async callback was executed for
a non-suspended-transaction case (with faked_msg), then the local avps are cleaned up, but
they belonged to a past transaction, already destroyed (along with avps).
So this case could happen when there is a mix usage of http async with suspended=1 as well
as with suspended=0. Code was rather old, but maybe nobody used the module mixed
suspending modes.
IMO, there is no need to set avps lists to process local in the process, because it is
done by faked_env which is used inside t_continue function before executing the routing
block, so the avps are available inside the config block.
I pushed the commit 1bc3bbd - @grumvalski can you check it and analyze if there are some
side effects by removing those lines? I couldn't spot when AVPs would be needed before
the use of fake_env() by t_continue(), but I am not that familiar with http async module
internals. If some unwanted effects, then the commit can be reverted. Or if all looks ok
and tests are fine, then it can be backported.
--
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub:
https://github.com/kamailio/kamailio/issues/2286#issuecomment-615366413