[SR-Users] Pleasing all kinds of UACs for RTP/SRTP with rtpengine

Sergiu Pojoga pojogas at gmail.com
Mon May 7 15:48:33 CEST 2018

 Hi Daniel,

Thar is correct, the top Via header branch param differs (has a .1 instead
of .0 at the end), that doesn't seem to count according to RFC 3271 section <https://tools.ietf.org/html/rfc3261#section->

Looking at the sip trace, the ACK for 415 is sent out before the 2nd branch

Unfortunately, inserting a 2 seconds sleep didn't help :(


On Mon, May 7, 2018 at 6:21 AM, Daniel-Constantin Mierla <miconda at gmail.com>

> Hello,
> the branch parameter value in top Via header is different, so this should
> indicate is not the same branch.
> Have you look at the network traffic, is the ACK for 415 getting first to
> device, before the 2nd branch INVITE? A that moment, the transaction should
> be considered terminated and a new one started.
> My understanding of "merging request" is that it should be done if two
> requests arrive at the same time, both still being active, without a final
> response sent back.
> What you can try to see what happens is to add a sleep() of few seconds
> for the 2nd branch and see if this time the device cleared the previous
> transaction. Of course, not like a really good solution, but can reveal
> what the device is doing.
> Cheers,
> Daniel
> On 04.05.18 20:43, Sergiu Pojoga wrote:
> In continuation of previous
> <https://marc.info/?l=sr-users&m=150730146302404&w=2>thread about
> none/optional/compulsory SRTP handling...
> I used the suggested approach of *t_reuse_branch()* in a
> *tm:branch-failure* detected by t_check_status("(415)|(488)") replies,
> with the only difference of me doing it vice-versa from the suggested
> mantra of offer SRTP first then fallback to RTP.
> It works... well, for some UACs, not so with others.
> The 'good' UACs happily accept an updated branch, like for e.g. Yealink,
> will reply with "*488 Not Acceptable Here*" at first followed by a *200
> OK*.
> The 'bad' UACs, like for e.g. Bria || Zoiper, will issue a "*415
> Unsupported Media Type*" at first, and then a "*482 Merged Request*"
> after receiving and updated branch with a different RTP profile.
> Rightfully so, they decided that the updated branch is a retransmission,
> since both branches have the same CSeq, Call-ID and From tag.
> The branch ID however differs, so does the RTP profile obviously.
> *Any suggestion on how to convince all UACs that the 2nd attempt is
> different than the 1st one?*
> According to RFC 3261,  a request is a merged request if ...
> " Merged Requests
>    If the request has no tag in the To header field, the UAS core MUST
>    check the request against ongoing transactions.  If the From tag,
>    Call-ID, and CSeq exactly match those associated with an ongoing
>    transaction, but the request does not match that transaction (based
>    on the matching rules in Section 17.2.3), the UAS core SHOULD
>    generate a 482 (Loop Detected) response and pass it to the server
>    transaction."
> _______________________________________________
> Kamailio (SER) - Users Mailing Listsr-users at lists.kamailio.orghttps://lists.kamailio.org/cgi-bin/mailman/listinfo/sr-users
> --
> Daniel-Constantin Mierlawww.twitter.com/miconda -- www.linkedin.com/in/miconda
> Kamailio World Conference - May 14-16, 2018 - www.kamailioworld.com
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20180507/b4b26d19/attachment.html>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: bria.png
Type: image/png
Size: 19040 bytes
Desc: not available
URL: <http://lists.kamailio.org/pipermail/sr-users/attachments/20180507/b4b26d19/attachment.png>

More information about the sr-users mailing list