[asterisk-dev] uncached realtime sip friends cannot set transport-protocol in sipregs

Walter Doekes walter+asterisk-dev at osso.nl
Thu Sep 8 04:17:10 CDT 2011

>>> So where did the transport=tcp in the URI come from after you loaded the SIP peer from realtime?
>> I told you: astdb
>> Partial answer, actually. Real answer is: first, it came from the sipregs, because it was still stored there from when I had rtcachefriends=yes. But, after removing that (UPDATE sipregs SET fullcontact=''), I still got the fullcontact. Then I broke astdb deliberately and finally I got no fullcontact (i.e. a constructed R-URI from ipaddr+port).
> That's just a very big bug. Report it and hopefully someone will fix it down the line.
> I've stated many times that the Asterisk realtime support in chan_sip needs a lot of love and possibly a new architecture... Unless someone comes up with resources to do that, we will have to survive with all the weird stuff that is in there now... Or move to Kamailio for registration/location handling, which works much better.

Ok. I'm willing to do the following:

(1) Change my patch from
to only not store anything in astdb when rtcachefriends=no.

(2) Add a transport= column to sipregs. For completeness sake, I will 
have to add such a column to astdb as well. (And I will be forced to add 
db checks for backwards compatibility.)

(3) Fix that fullcontact gets stored always:
But I will take the preferred transport from the new column, not by 
parsing the fullcontact.

(4) I've also cleaned up chan_sip realtime peer matching (fixing memory 
leaks and making it more readable) -- a bit of love. I have a review up 
for that at:
That will need some reviewing.

Would this be accepted?

Walter Doekes

More information about the asterisk-dev mailing list