diff --git a/src/lib/lwan-request.c b/src/lib/lwan-request.c index 7824e446b..7c367a969 100644 --- a/src/lib/lwan-request.c +++ b/src/lib/lwan-request.c @@ -1288,8 +1288,10 @@ get_remaining_body_data_length(struct lwan_request *request, return HTTP_BAD_REQUEST; if (UNLIKELY((size_t)parsed_size >= max_size)) return HTTP_TOO_LARGE; - if (UNLIKELY(!parsed_size)) + if (UNLIKELY(!parsed_size)) { + *total = *have = 0; return HTTP_OK; + } *total = (size_t)parsed_size; @@ -1336,7 +1338,7 @@ static int read_body_data(struct lwan_request *request) status = get_remaining_body_data_length(request, max_data_size, &total, &have); - if (status != HTTP_PARTIAL_CONTENT) + if (status != HTTP_PARTIAL_CONTENT && status != HTTP_OK) return -(int)status; new_buffer = diff --git a/src/lib/lwan.c b/src/lib/lwan.c index ec6c0cf5f..bcbc82192 100644 --- a/src/lib/lwan.c +++ b/src/lib/lwan.c @@ -462,7 +462,8 @@ void lwan_detect_url_map(struct lwan *l) iter->name, iter->route); const struct lwan_url_map map = {.prefix = iter->route, - .handler = iter->handler}; + .handler = iter->handler, + .flags = HANDLER_PARSE_MASK}; register_url_map(l, &map); } }