X-Git-Url: https://gerrit.fd.io/r/gitweb?a=blobdiff_plain;f=src%2Fplugins%2Fquic%2Fquic.c;fp=src%2Fplugins%2Fquic%2Fquic.c;h=26113066014df97b874cd03c4eea756d8d8db804;hb=5b4b4c05ff06b866b90b0df9b2be2ed28e606f16;hp=3655f9538b83f48319c985919c7e456c3f13d2e2;hpb=d6c3b1f1fc2cfa50a67222e272a7e48744708d9f;p=vpp.git diff --git a/src/plugins/quic/quic.c b/src/plugins/quic/quic.c index 3655f9538b8..26113066014 100644 --- a/src/plugins/quic/quic.c +++ b/src/plugins/quic/quic.c @@ -876,6 +876,14 @@ quic_on_receive (quicly_stream_t * stream, size_t off, const void *src, { /* Streams live on the same thread so (f, stream_data) should stay consistent */ rlen = svm_fifo_enqueue (f, len, (u8 *) src); + if (PREDICT_FALSE (rlen < 0)) + { + /* + * drop, fifo full + * drop, fifo grow + */ + return; + } QUIC_DBG (3, "Session [idx %u, app_wrk %u, ti %u, rx-fifo 0x%llx]: " "Enqueuing %u (rlen %u) at off %u in %u space, ", stream_session->session_index, @@ -898,6 +906,14 @@ quic_on_receive (quicly_stream_t * stream, size_t off, const void *src, rlen = svm_fifo_enqueue_with_offset (f, off - stream_data->app_rx_data_len, len, (u8 *) src); + if (PREDICT_FALSE (rlen < 0)) + { + /* + * drop, fifo full + * drop, fifo grow + */ + return; + } QUIC_ASSERT (rlen == 0); } return;