Thank you for the response.
We understand there could not be a quick response expectation on discussion in a forum where participants give their time and expertise on good will basis. Longer delays would definitely be more tolerable on educational or experimental platforms as they are just for learning purposes which obviously is not the subject of most of posts in this forum. We've been under impression that this forum is being managed by creators of Yate for professional discussion about the open solution.
We've looked for finding a paid support solution on Yate but could not find anything. Let us know if there is something in this matter with expected SLA within the contract to consider.
Regarding the posted response, we do have two concerns.
CPU utilization was one of our concerns as well hence we logged the values at the time of the problem.
When Yate was performing incorrectly, CPU was 85% idle. Also there was an average of CPS=5 at the time for the calls hitting Yate. There might have been longer delays in getting the result of SQL queries at the time, however that should have affected the routing but not the call sequence.
The second and main concern is the way Yate behave when the machine is supposedly under heavy load. If the machine is under heavy load then everything should slow down with the same expected sequence, however in the previously provided graph it is clear that Yate had no problem processing the call flow on each side of the CLIENT and PROVIDER sides separately.
Yate as a proxy sitting in the middle, should submit some of the messages only when they are received from the other end. Below is a part of "SIP Call Flow Examples" draft under section 3.1.7 which could be accessed through below link.
https://www.ietf.org/proceedings/51/I-D/draft-ietf-sip-call-flows-05.txt IFT UA Proxy IFTGW UA
| F1 INVITE | |
|------------------->| F2 INVITE |
| |------------------->|
| F3 100 Trying | |
|<-------------------| F4 100 Trying |
| |<-------------------|
| | F5 180 Ringing|
|F6 180 Ringing |<-------------------|
|<-------------------| |
| | F7 200 OK |
| F8 200 OK |<-------------------|
|<-------------------| |
| F9 ACK | |
|------------------->| F10 ACK |
| |------------------->|
|Both Way RTP Media Established |
|<======================>|
As an example The ACK for 200 OK (F10 message in above graph) could only be passed to IFTGW UA after it is received from IFT UA (F9 message in above graph).
In the previously supplied graph for our call, you can see that Yate sent the ACK for 200 OK on the PROVIDER side on its own without receiving the message from the CLIENT side. Therefore the expected order was not followed by Yate in our case which was the main concern as it left one not connected call on the CLIENT side and one FALSE connected (based on incorrect SIP message handling) call with billable duration on the PROVIDER side.
How this behavior could be justified with the reason of the machine being under heavy load while no lag could be seen in the SIP message exchange between Yate and CLIENT and also Yate and PROVIDER legs individually.
Doesn't this SIP message submission without receiving the message from the other end look like an obvious bug; regardless of the machine being under heavily load or not?
Thank you.