diff --git a/mongoose.c b/mongoose.c index f4b4306f7dda91a27bd7042f703f16f0cb1a6237..d718ec497f1b675e345353c88da956aa69a07286 100644 --- a/mongoose.c +++ b/mongoose.c @@ -1900,6 +1900,10 @@ static int find_index_file(struct connection *conn, char *path, return found; } +static void write_terminating_chunk(struct connection *conn) { + mg_write(&conn->mg_conn, "0\r\n\r\n", 5); +} + static void call_uri_handler_if_data_is_buffered(struct connection *conn) { struct iobuf *loc = &conn->local_iobuf; struct mg_connection *c = &conn->mg_conn; @@ -1913,7 +1917,7 @@ static void call_uri_handler_if_data_is_buffered(struct connection *conn) { if (loc->len >= c->content_len) { conn->endpoint.uh->handler(c); if (conn->flags & CONN_HEADERS_SENT) { - write_chunk(conn, "", 0); // Write final zero-length chunk + write_terminating_chunk(conn); } close_local_endpoint(conn); } @@ -2187,7 +2191,7 @@ static void send_directory_listing(struct connection *conn, const char *dir) { } free(arr); - write_chunk(conn, "", 0); // Write final zero-length chunk + write_terminating_chunk(conn); close_local_endpoint(conn); } #endif // NO_DIRECTORY_LISTING @@ -3294,6 +3298,7 @@ static void close_local_endpoint(struct connection *conn) { #endif conn->endpoint_type = EP_NONE; + conn->flags = 0; conn->cl = conn->num_bytes_sent = conn->request_len = 0; free(conn->request); conn->request = NULL;