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.