我有這樣的場景:多從UA -Re-誠邀遞增的Cseq處理
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 <----------
我在RFC閱讀:5407
3.1.5。被叫方可以接收重新邀請(建立狀態),而在 暫停狀態(案例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
|------------------------------->|
| |
我也看到,如果我們找到一個在前狀態重新邀請,我們將發送500與此相同的端點。
我的問題是:
上述情況似乎第二重新邀請與Cseq的3之前的任何最終響應發送無效。
我們應該迎合這種情況嗎?如果是的話,我們應該放棄重新邀請而不是發送500.當從UA發送ACK並在兩者之間放置時,在RFC圖中發送500?