I have a scenario where Kamailio is receiving a retransmit of a 200 OK to a late offer
INVITE after it has sent the ACK, and after it has begun to handle a reInvite from the
calling party. This results in the following commands to the rtpengine: Offer (reInvite),
Offer (200 retransmit), Answer (ACK to retransmitted 200). At this point, I see STUN
binding errors both in Chrome, where the webRTC client (called party) is running, and in
the rtpengine logs.
ERROR:port.cc(498)]: Received STUN BINDING error response: class=4 number=1
reason='Unauthorized'
[core] STUN authentication mismatch from x.x.x.x:63396
[ice] Received ICE/STUN response code 487 for candidate pair dl2efuRG06eK4nFs:2713745946:1
from x.x.x.x::64509 to x.x.x.x
[ice] ICE role change, now controlled
[ice] Recalculating all ICE pair priorities
[ice] Triggering check for dl2efuRG06eK4nFs:2713745946:1
[ice] ICE/STUN response with unknown transaction received (from x.x.x.x:64509 on interface
x.x.x.x:16184)
So, briefly, the call flow up to the point of error looks like this:
INVITE w/o SDP
200 OK w/SDP, Offer to rtpengine
ACK w/SDP, Answer to rtpengine
reInvite w/SDP, Offer to rtpengine
retransmission of 200 OK, Offer to rtpengine
ACK to retransmitted 200, Answer to rtpengine
I have dialog tracking enabled in my config, and it seems like Kamailio is behaving as
expected when the retransmitted 200 and ACK are forwarded on, but I'm curious if other
people have run into a scenario like this and how they have dealt with it.