tcp: Allow accepting session to send custom packet 96/33496/2
authorliuyacan <liuyacan@corp.netease.com>
Mon, 16 Aug 2021 02:51:13 +0000 (10:51 +0800)
committerFlorin Coras <florin.coras@gmail.com>
Mon, 30 Aug 2021 13:55:55 +0000 (13:55 +0000)
Tcp may want to send acks in established, but the app
has not called accept() yet.

Type: improvement

Signed-off-by: liuyacan <liuyacan@corp.netease.com>
Change-Id: I43b8cd386e533ca95c8ec260a0a1f695ea140358

src/vnet/session/session_node.c

index b8b5ce2..969f88c 100644 (file)
@@ -1018,7 +1018,15 @@ session_tx_not_ready (session_t * s, u8 peek_data)
       /* Can retransmit for closed sessions but can't send new data if
        * session is not ready or closed */
       else if (s->session_state < SESSION_STATE_READY)
-       return 1;
+       {
+         /* Allow accepting session to send custom packets.
+          * For instance, tcp want to send acks in established, but
+          * the app has not called accept() yet */
+         if (s->session_state == SESSION_STATE_ACCEPTING &&
+             (s->flags & SESSION_F_CUSTOM_TX))
+           return 0;
+         return 1;
+       }
       else if (s->session_state >= SESSION_STATE_TRANSPORT_CLOSED)
        {
          /* Allow closed transports to still send custom packets.