diff options
author | liuyacan <liuyacan@corp.netease.com> | 2021-04-23 09:38:38 +0800 |
---|---|---|
committer | liuyacan <liuyacan@corp.netease.com> | 2021-04-23 16:23:37 +0800 |
commit | 5724aecd20e8f5e50aba418d2a021ef02275d589 (patch) | |
tree | 39be42608d189fd8653e2e1d44b95dbe53199967 /src/vnet/session | |
parent | 2ba0177f38a2dcf15ee29c0af219f07606552356 (diff) |
session: set fifo's session index before vcl attach
Current implementation may have timing issue:
1. The TCP 3-way-handshake is completed but the app is busy and
does not process the CONNECTED event.
2. VPP receive some data from peer and try to send a RX event to
VCL, but the fifo's client session index is not initialized yet.
So this event will be sent to incorrect session 0.
Type: fix
Change-Id: I54f222232968bfaea5f4745284a1cfacc89482a9
Signed-off-by: liuyacan <liuyacan@corp.netease.com>
Diffstat (limited to 'src/vnet/session')
-rw-r--r-- | src/vnet/session/session_api.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/src/vnet/session/session_api.c b/src/vnet/session/session_api.c index 5910cd366fb..f54a46b39ba 100644 --- a/src/vnet/session/session_api.c +++ b/src/vnet/session/session_api.c @@ -303,6 +303,8 @@ mq_send_session_connected_cb (u32 app_wrk_index, u32 api_context, m.server_rx_fifo = fifo_segment_fifo_offset (s->rx_fifo); m.server_tx_fifo = fifo_segment_fifo_offset (s->tx_fifo); m.segment_handle = session_segment_handle (s); + s->rx_fifo->shr->client_session_index = api_context; + s->tx_fifo->shr->client_session_index = api_context; } else { |