From 25579b4acd449e1bae30d2a20a44b77741c8e1fd Mon Sep 17 00:00:00 2001 From: Florin Coras Date: Wed, 6 Jun 2018 17:55:02 -0700 Subject: tcp: cleanup connection/session fixes - Cleanup session state after last ack and avoid using a cleanup timer. - Change session cleanup to free the session as opposed to waiting for delete notify. - When in close-wait, postpone sending the fin on close until all outstanding data has been sent. - Don't flush rx fifo unless in closed state Change-Id: Ic2a4f0d5568b65c83f4b55b6c469a7b24b947f39 Signed-off-by: Florin Coras --- src/vnet/session/session_node.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) (limited to 'src/vnet/session/session_node.c') diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index d6fcd911b08..2eea30be439 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -799,7 +799,8 @@ skip_dequeue: } break; case FIFO_EVENT_DISCONNECT: - /* Make sure stream disconnects run after the pending list is drained */ + /* Make sure stream disconnects run after the pending list is + * drained */ s0 = session_get_from_handle (e0->session_handle); if (!e0->postponed) { @@ -807,11 +808,9 @@ skip_dequeue: vec_add1 (smm->pending_disconnects[thread_index], *e0); continue; } - /* If tx queue is still not empty, wait a bit */ - if (svm_fifo_max_dequeue (s0->server_tx_fifo) - && e0->postponed < 200) + /* If tx queue is still not empty, wait */ + if (svm_fifo_max_dequeue (s0->server_tx_fifo)) { - e0->postponed += 1; vec_add1 (smm->pending_disconnects[thread_index], *e0); continue; } -- cgit 1.2.3-korg