POST parser: do not try to process buffer leftovers if request is discarded

This commit is contained in:
Evgeny Grin (Karlson2k)
2024-09-02 13:26:49 +02:00
parent ac80238255
commit dc80e9d21b
2 changed files with 7 additions and 1 deletions
+2 -1
View File
@@ -2911,7 +2911,8 @@ mhd_stream_process_post_finish (struct MHD_Connection *restrict c)
const struct MHD_UploadAction *act;
bool state_changed;
if (MHD_POST_PARSE_RES_OK == p_data->parse_result)
if ((MHD_POST_PARSE_RES_OK == p_data->parse_result) &&
! c->discard_request)
{
// TODO: implement processing in the connection buffer
if (check_post_leftovers (c))
+5
View File
@@ -3262,6 +3262,8 @@ process_request_chunked_body (struct MHD_Connection *restrict c)
mhd_assert ((0 == cntn_data_ready) || \
(MHD_POST_PARSE_RES_OK != c->rq.u_proc.post.parse_result) || \
(MHD_CONNECTION_BODY_RECEIVING != c->state));
if (MHD_CONNECTION_BODY_RECEIVING != c->state)
c->discard_request = true;
c->rq.cntn.recv_size += size_provided;
}
else
@@ -3394,6 +3396,9 @@ process_request_nonchunked_body (struct MHD_Connection *restrict c)
mhd_assert ((0 == size_provided) || \
(MHD_POST_PARSE_RES_OK != c->rq.u_proc.post.parse_result) || \
(MHD_CONNECTION_BODY_RECEIVING != c->state));
if (MHD_CONNECTION_BODY_RECEIVING != c->state)
c->discard_request = true;
read_buf_reuse = true;
c->rq.cntn.proc_size += cntn_data_ready;
if (c->rq.cntn.recv_size == c->rq.cntn.cntn_size)