diff options
author | Florin Coras <fcoras@cisco.com> | 2018-06-06 17:55:02 -0700 |
---|---|---|
committer | Dave Barach <openvpp@barachs.net> | 2018-06-11 17:32:40 +0000 |
commit | 25579b4acd449e1bae30d2a20a44b77741c8e1fd (patch) | |
tree | b82e8bb17fc8b2f257cb57dfd9e6ca628a5916a3 /src/vnet/session/session_node.c | |
parent | 40903ac34f89d9e2ad775e98b7bcec5b7feb0207 (diff) |
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 <fcoras@cisco.com>
Diffstat (limited to 'src/vnet/session/session_node.c')
-rw-r--r-- | src/vnet/session/session_node.c | 9 |
1 files changed, 4 insertions, 5 deletions
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; } |