NS_Emulation: Tolerate late NS-BLOCK-ACK / NS-UNBLOCK-ACK

Particularly in case both sides initiate a BLOCK or UNBLOCK procedure
at almost the same time, it can happen thet we're already in BLOCKED
state and receive a late BLOCK-ACK or in UNBLOCKED state and receive a
late UNBLOCK-ACK.

Let's just silently discard them instaed of generating NS-STATUS which
may confuse the peer.

Change-Id: I2e5b934e1cf6c6cf982d5ab1dbb32e8920b91071
This commit is contained in:
Harald Welte 2020-12-07 15:53:57 +01:00
parent b2647f7135
commit da9d9387f6
1 changed files with 6 additions and 0 deletions

View File

@ -561,6 +561,9 @@ module NS_Emulation {
Tns_block.stop; Tns_block.stop;
f_change_state(NSVC_S_ALIVE_UNBLOCKED); f_change_state(NSVC_S_ALIVE_UNBLOCKED);
} }
/* tolerate a late NS-BLOCK-ACK from peer */
[] NSCP.receive(tr_NS_BLOCK_ACK(g_nsvc_config.nsvci)) -> value rf {
}
[] Tns_block.timeout { [] Tns_block.timeout {
/* repeat unblock transmission */ /* repeat unblock transmission */
f_sendUnblock(); f_sendUnblock();
@ -583,6 +586,9 @@ module NS_Emulation {
[] NSCP.receive(tr_NS_BLOCK_ACK(g_nsvc_config.nsvci)) -> value rf { [] NSCP.receive(tr_NS_BLOCK_ACK(g_nsvc_config.nsvci)) -> value rf {
Tns_block.stop; Tns_block.stop;
} }
/* tolerate a late NS-UNBLOCK-ACK from peer */
[] NSCP.receive(t_NS_UNBLOCK_ACK) -> value rf {
}
/* NS-UNITDATA PDU from network to NS-UNITDATA.ind to user */ /* NS-UNITDATA PDU from network to NS-UNITDATA.ind to user */
[] NSCP.receive(tr_NS_UNITDATA(?, ?, ?)) -> value rf { [] NSCP.receive(tr_NS_UNITDATA(?, ?, ?)) -> value rf {
NS_SP.send(ts_NsUdInd(g_config.nsei, g_nsvc_config.nsvci, NS_SP.send(ts_NsUdInd(g_config.nsei, g_nsvc_config.nsvci,