I have this scenario:
INVITE ----------> 1 Cseq invite
100 <----------
180 <----------
200 <----------
ACK ----------> Call 1 ACK connected
Pause [ 2000ms]
INVITE ----------> 2Cseq Re-Invite
100 <----------
Pause [ 500ms]
INVITE ----------> 3 Caseq Re-Invite
100 <----------
500 <---------- 500 3 cseq response for 3 Re-invite
200 <---------- 200 2 Cseq OK received for 2 nd ReInvite
ACK ----------> Ack of 3 cseq 500 -> here the state in SM is waiting ACK -> connected ACK
ACK ---------> * Now here Connected ACK>Connected ACK ->Error - This is the issue. *
BYE ---------->
200 <----------
I read in RFC : 5407
3.1.5. Callee Receives re-INVITE (Established State) While in the Moratorium State (Case 2)
State Alice Bob State
| |
| ini-INVITE (no offer) F1 |
|------------------------------->|
Pre | 180 F2 | Pre
|<-------------------------------|
Ear | | Ear
| 200(ini-INV) w/offer1 F3 |
|<-------------------------------|
Mora | ACK w/answer1 F4(packet loss) | Mora
|-------------------->x |
Est | |
| re-INVITE F6 200 F5(=F3) |
| w/offer2 w/offer1 |
|------------- --------------|
| \ / |
| X |
| / \ |
|<------------ ------------->|
| ACK F7(=F4) 491/500(re-INV) F8|
|------------- --------------|
| \ / |
| X |
| / \ |
|<------------ ------------->|
| ACK (re-INV) F9 | Est
|------------------------------->|
| |
I do See that if we find a Re-invite in Preceding state we will send 500 with same endpoint for this.
My question is :
The above scenarios seems not valid as 2nd Re-Invite with Cseq 3 is sent before any final response .
Should We cater this scenario?If yes , should we Drop Re-Invite and not send 500. As 500 is sent in the RFC Diagram when ACK is sent from UA and is dropped in between?