diff options
-rw-r--r-- | src/plugins/tlsopenssl/tls_openssl.c | 3 | ||||
-rw-r--r-- | src/vnet/session/session_node.c | 4 | ||||
-rw-r--r-- | src/vnet/tls/tls.c | 1 |
3 files changed, 8 insertions, 0 deletions
diff --git a/src/plugins/tlsopenssl/tls_openssl.c b/src/plugins/tlsopenssl/tls_openssl.c index 00cd4621897..c906d0e294a 100644 --- a/src/plugins/tlsopenssl/tls_openssl.c +++ b/src/plugins/tlsopenssl/tls_openssl.c @@ -159,6 +159,9 @@ openssl_read_from_ssl_into_fifo (svm_fifo_t * f, SSL * ssl) u32 max_enq; max_enq = svm_fifo_max_enqueue_prod (f); + if (!max_enq) + return 0; + n_fs = svm_fifo_provision_chunks (f, fs, n_segs, max_enq); if (n_fs < 0) return 0; diff --git a/src/vnet/session/session_node.c b/src/vnet/session/session_node.c index 2e21f26ec29..f5e8478aaf3 100644 --- a/src/vnet/session/session_node.c +++ b/src/vnet/session/session_node.c @@ -1188,6 +1188,10 @@ session_tx_fifo_dequeue_internal (session_worker_t * wrk, session_evt_add_head_old (wrk, elt); } + if (sp->max_burst_size && + svm_fifo_needs_deq_ntf (s->tx_fifo, sp->max_burst_size)) + session_dequeue_notify (s); + return n_packets; } diff --git a/src/vnet/tls/tls.c b/src/vnet/tls/tls.c index 6052ca1bf65..b9c07ff9406 100644 --- a/src/vnet/tls/tls.c +++ b/src/vnet/tls/tls.c @@ -353,6 +353,7 @@ tls_ctx_write (tls_ctx_t * ctx, session_t * app_session, sp->max_burst_size = sp->max_burst_size * TRANSPORT_PACER_MIN_MSS; n_wrote = tls_vfts[ctx->tls_ctx_engine].ctx_write (ctx, app_session, sp); + sp->max_burst_size = n_wrote; return n_wrote > 0 ? clib_max (n_wrote / TRANSPORT_PACER_MIN_MSS, 1) : 0; } |