quic:fix crash rx_fifo full or grow
if when the rx_fifo grows, svm_fifo_enqueue() return -4, stream_data->app_rx_data_len += rlen type conversion occurs, Finally,stream->recvstate.data_off calculation is wrong. Type:fix Signed-off-by: fanxb <fxb_mail@163.com> Change-Id: Iae11f0c453f32d836f4148d70e3b121545a53a90 (cherry picked from commit 5b4b4c05ff06b866b90b0df9b2be2ed28e606f16)
This commit is contained in:
parent
996550c62f
commit
6777efdda0
@ -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;
|
||||
|
Loading…
x
Reference in New Issue
Block a user