
Hard to say without more detailed logs, but it sounds like the user is behind NAT and indicates their private IP in the SDP, and so can start receiving RTP only once it has sent some RTP on their own, from which rtpengine can learn the correct address? I'm not sure how this would have ever worked in a previous version, or why blocking a re-invite without SDP would make a difference. There's probably some other RTP flow OR some other SDP signalling going on that you're not aware of (or haven't mentioned), that lets rtpengine learn the correct endpoint address.
Cheers
--
You received this message because you are subscribed to the Google Groups "rtpengine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtpengine+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rtpengine/711edbc4-9817-fc06-4be4-78f3637c61a7%40sipwise.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/rtpengine/CABwsnswH8n8aA4fiJS5Q3eo4-NFpYvMr8vgwj10YurR2T%2Bi_cg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rtpengine/cd0c78d8-720c-a6f6-57c6-ebff06944d0b%40sipwise.com.
--
You received this message because you are subscribed to the Google Groups "rtpengine" group.
To unsubscribe from this group and stop receiving emails from it, send an email to rtpengine+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/rtpengine/e3300822-6a9c-2b70-0bcf-a09030036275%40sipwise.com.

Hello,We kept looking into this issue, and we were able to locate part of code that is the source of our problem.
This part of source code was introduced in 9.4 and don't know which use case it solved.But when removing this part, now all our traces are good, and we don't see any latency.Is there any way to improve this part of code or block this kind of media flows on kamailio side during wait time ?
This is exactly the code responsible for the feature I explained
in my last email:
What happens is that the re-invite changes the address advertised by the client (from one private address to another I guess), which indicates a new RTP endpoint, and so when rtpengine receives packets from the same source address as before, it ignores them for address learning purposes for a few seconds, as it's likely that these packets were still sent by the original RTP endpoint (from before the re-invite) which would be the wrong one to send the reverse RTP flow to. Instead it's waiting to receive packets from a new source address (as indicated by a new address in the SDP) and would use these for address learning purposes immediately, if there were any.
Or in short:
What should rtpengine do now? Without the code snippet in question, rtpengine would immediately assume B to be the correct address for X and forget everything about C. This would be wrong if C were actually the correct address (or perhaps some other address D that is mapped to C). This is a real world (and somewhat common) scenario where RTP flows are not immediately switched on or off (or switched to a new port/address) following a re-invite, or while the re-invite is still in progress. Removing this code would result in complete loss of media for X after the re-invite in this scenario.
I would argue that losing 1-2 seconds of audio in a fringe use case (why does the SDP advertise a change in address when the RTP doesn't change address?) is a better outcome than losing all audio in a more common scenario.
Cheers