[sr-dev] Suggesting fix for t_request and pua_dialoginfo

Jasmin Schnatterbeck js at data-cmr.net
Mon Aug 16 12:56:27 CEST 2010


Hi Henning,

thanks for your message.

The issue is visible, whenever pua_dialoginfo sends out a PUBLISH
request. During that process, build_cell is called, which destroys avps.

I experimented with adding a parameter. It works - nearly.
PUBLISH is sent out, avps are OK, but after additional 2-3 seconds, one
child process dies.

So there are these 2 possibilities:
- AVPs get destroyed
- kamailio dies a few seconds after sending out the PUBLISH

Which scenario happens depends on these lines in build_cell() (tm
h_table.c:~300):


		old = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_URI,
				&new_cell->uri_avps_from );
		new_cell->uri_avps_from = *old;
		*old = 0;

		old = set_avp_list(AVP_TRACK_TO | AVP_CLASS_URI,
				&new_cell->uri_avps_to );
		new_cell->uri_avps_to = *old;
		*old = 0;

		old = set_avp_list(AVP_TRACK_FROM | AVP_CLASS_USER,
				&new_cell->user_avps_from );
		new_cell->user_avps_from = *old;
		*old = 0;

		old = set_avp_list(AVP_TRACK_TO | AVP_CLASS_USER,
				&new_cell->user_avps_to );
		new_cell->user_avps_to = *old;
		*old = 0;

If these lines are present, AVPS get destroyed. If not, kamailio child
dies a few seconds after sending out PUBLISH.

I tried different things here, but I did not figure out yet, why this
happens.
I assume that somewhere (may through a timer) somewhat is called, which
uses the parameters of the cell, which refer to avps. And if there is no
AVP list (but e.g. a 0 pointer), the child processing this code dies.
But thats only an assumption, which is difficult to verify, if you do
not know the tm code exactly.

So I would like to ask Andrei, whether if it is possible to investigate
this problem - because at this moment, it makes the use of
pua_dialoginfo totally impossible.

Thanks & Best Regards
Jasmin



> On Wednesday 11 August 2010, Jasmin Schnatterbeck wrote:
> > some months ago I reported a problem with pua_dialoginfo:
> > Avps declared in request route are not available anymore in branch
> > route, if pua_dialoginfo module is loaded.
> > 
> > I do not know whether there are some experiences with this problem or
> > not, so I looked for the reason.
> > 
> > pua_dialoginfo uses pua for sending PUBLISH request
> > pua uses tm t_request for sending PUBLISH request
> > 
> > t_request() is located in uac.c (tm):
> > - in line 411 avp list is reset
> > - in line 276 build_cell() is called:
> >   build_cell() is located in h_table.c, where lines 305-323 delete avps
> > 
> > If I comment out the mentioned lines, which delete avps, then avps set
> > in request route are also available in branch route.
> > But I do not know, what is also affected by this change.
> > 
> > So would it be reasonable, to add a parameter to build_cell() for not
> > changing the AVP list?
> 
> Hi Jasmin,
> 
> so this issue is just visible in the transaction on which the pua_dialoginfo 
> module acts on, or its affects also unrelated transactions?
> 
> According my understanding the build_cell method is used for example during 
> the creation of a new SIP transaction. This is probably necessary (in this 
> case) for t_request to work correctly. So changing it globally would be 
> probably not a good idea as it will probably have some side effects. But you 
> can add a parameter as you suggested, and just see if it works in your setup. 
> 
> If its really harmless i can't confirm at the moment, as my insight into the 
> details of the TM module is limited. If you want to get some feedback about a 
> patch, Andrei as the maintainer of the module would be probably more qualified 
> to give a sound answer. :-)
> 
> Cheers,
> 
> Henning





More information about the sr-dev mailing list