|
@@ -6148,13 +6148,19 @@ static int getreq(struct mg_connection *conn, char *ebuf, size_t ebuf_len)
|
|
&conn->request_info) <= 0) {
|
|
&conn->request_info) <= 0) {
|
|
snprintf(ebuf, ebuf_len, "Bad request: [%.*s]", conn->data_len, conn->buf);
|
|
snprintf(ebuf, ebuf_len, "Bad request: [%.*s]", conn->data_len, conn->buf);
|
|
} else {
|
|
} else {
|
|
- /* Request is valid */
|
|
|
|
|
|
+ /* Message is a valid request or response */
|
|
if ((cl = get_header(&conn->request_info, "Content-Length")) != NULL) {
|
|
if ((cl = get_header(&conn->request_info, "Content-Length")) != NULL) {
|
|
|
|
+ /* Request/response has content length set */
|
|
conn->content_len = strtoll(cl, NULL, 10);
|
|
conn->content_len = strtoll(cl, NULL, 10);
|
|
} else if (!mg_strcasecmp(conn->request_info.request_method, "POST") ||
|
|
} else if (!mg_strcasecmp(conn->request_info.request_method, "POST") ||
|
|
!mg_strcasecmp(conn->request_info.request_method, "PUT")) {
|
|
!mg_strcasecmp(conn->request_info.request_method, "PUT")) {
|
|
|
|
+ /* POST or PUT request without content length set */
|
|
|
|
+ conn->content_len = -1;
|
|
|
|
+ } else if (!mg_strncasecmp(conn->request_info.request_method, "HTTP/", 5)) {
|
|
|
|
+ /* Response without content length set */
|
|
conn->content_len = -1;
|
|
conn->content_len = -1;
|
|
} else {
|
|
} else {
|
|
|
|
+ /* Other request */
|
|
conn->content_len = 0;
|
|
conn->content_len = 0;
|
|
}
|
|
}
|
|
conn->birth_time = time(NULL);
|
|
conn->birth_time = time(NULL);
|