diff --git a/mongoose.c b/mongoose.c index bd457fe2ef471f485d4edadbb423659fa8fb08ff..e92bcbd37b5c6f8ed535bd71106d1b463da01700 100644 --- a/mongoose.c +++ b/mongoose.c @@ -4903,9 +4903,8 @@ static int getreq(struct mg_connection *conn, char *ebuf, size_t ebuf_len) { if (conn->request_len == 0 && conn->data_len == conn->buf_size) { snprintf(ebuf, ebuf_len, "%s", "Request Too Large"); - } if (conn->request_len <= 0) { + } else if (conn->request_len <= 0) { snprintf(ebuf, ebuf_len, "%s", "Client closed connection"); - conn->must_close = 1; } else if (parse_http_message(conn->buf, conn->buf_size, &conn->request_info) <= 0) { snprintf(ebuf, ebuf_len, "Bad request: [%.*s]", conn->data_len, conn->buf); @@ -4960,6 +4959,7 @@ static void process_new_connection(struct mg_connection *conn) { do { if (!getreq(conn, ebuf, sizeof(ebuf))) { send_http_error(conn, 500, "Server Error", "%s", ebuf); + conn->must_close = 1; } else if (!is_valid_uri(conn->request_info.uri)) { snprintf(ebuf, sizeof(ebuf), "Invalid URI: [%s]", ri->uri); send_http_error(conn, 400, "Bad Request", "%s", ebuf);