Commit 5475fe66 authored by Sergey Lyubka's avatar Sergey Lyubka

Implemented USE_POST_SIZE_LIMIT

parent 8f62822a
...@@ -141,13 +141,17 @@ struct ll { struct ll *prev, *next; }; ...@@ -141,13 +141,17 @@ struct ll { struct ll *prev, *next; };
#define ENV_EXPORT_TO_CGI "MONGOOSE_CGI" #define ENV_EXPORT_TO_CGI "MONGOOSE_CGI"
#define PASSWORDS_FILE_NAME ".htpasswd" #define PASSWORDS_FILE_NAME ".htpasswd"
#ifndef WEBSOCKET_PING_INTERVAL_SECONDS #ifndef USE_WEBSOCKET_PING_INTERVAL
#define WEBSOCKET_PING_INTERVAL_SECONDS 5 #define USE_WEBSOCKET_PING_INTERVAL 5
#endif #endif
// Extra HTTP headers to send in every static file reply // Extra HTTP headers to send in every static file reply
#if !defined(EXTRA_HTTP_HEADERS) #if !defined(USE_EXTRA_HTTP_HEADERS)
#define EXTRA_HTTP_HEADERS "" #define USE_EXTRA_HTTP_HEADERS ""
#endif
#ifndef USE_POST_SIZE_LIMIT
#define USE_POST_SIZE_LIMIT 0
#endif #endif
#ifdef ENABLE_DBG #ifdef ENABLE_DBG
...@@ -759,7 +763,7 @@ static void prepare_cgi_environment(struct connection *conn, ...@@ -759,7 +763,7 @@ static void prepare_cgi_environment(struct connection *conn,
addenv(blk, "%s", "REDIRECT_STATUS=200"); // For PHP addenv(blk, "%s", "REDIRECT_STATUS=200"); // For PHP
// TODO(lsm): fix this for IPv6 case // TODO(lsm): fix this for IPv6 case
addenv(blk, "SERVER_PORT=%d", ri->remote_port); //addenv(blk, "SERVER_PORT=%d", ri->remote_port);
addenv(blk, "REQUEST_METHOD=%s", ri->request_method); addenv(blk, "REQUEST_METHOD=%s", ri->request_method);
addenv(blk, "REMOTE_ADDR=%s", ri->remote_ip); addenv(blk, "REMOTE_ADDR=%s", ri->remote_ip);
...@@ -1575,7 +1579,7 @@ static void send_websocket_handshake_if_requested(struct mg_connection *conn) { ...@@ -1575,7 +1579,7 @@ static void send_websocket_handshake_if_requested(struct mg_connection *conn) {
} }
static void ping_idle_websocket_connection(struct connection *conn, time_t t) { static void ping_idle_websocket_connection(struct connection *conn, time_t t) {
if (t - conn->last_activity_time > WEBSOCKET_PING_INTERVAL_SECONDS) { if (t - conn->last_activity_time > USE_WEBSOCKET_PING_INTERVAL) {
mg_websocket_write(&conn->mg_conn, 0x9, "", 0); mg_websocket_write(&conn->mg_conn, 0x9, "", 0);
} }
} }
...@@ -1716,7 +1720,7 @@ static void open_file_endpoint(struct connection *conn, const char *path, ...@@ -1716,7 +1720,7 @@ static void open_file_endpoint(struct connection *conn, const char *path,
conn->mg_conn.status_code, msg, date, lm, etag, conn->mg_conn.status_code, msg, date, lm, etag,
(int) mime_vec.len, mime_vec.ptr, conn->cl, (int) mime_vec.len, mime_vec.ptr, conn->cl,
suggest_connection_header(&conn->mg_conn), suggest_connection_header(&conn->mg_conn),
range, EXTRA_HTTP_HEADERS); range, USE_EXTRA_HTTP_HEADERS);
spool(&conn->remote_iobuf, headers, n); spool(&conn->remote_iobuf, headers, n);
if (!strcmp(conn->mg_conn.request_method, "HEAD")) { if (!strcmp(conn->mg_conn.request_method, "HEAD")) {
...@@ -2960,6 +2964,15 @@ static void open_local_endpoint(struct connection *conn) { ...@@ -2960,6 +2964,15 @@ static void open_local_endpoint(struct connection *conn) {
if (conn->endpoint.uh != NULL) { if (conn->endpoint.uh != NULL) {
conn->endpoint_type = EP_USER; conn->endpoint_type = EP_USER;
conn->mg_conn.content = conn->local_iobuf.buf; conn->mg_conn.content = conn->local_iobuf.buf;
#if USE_POST_SIZE_LIMIT > 1
{
const char *cl = mg_get_header(&conn->mg_conn, "Content-Length");
if (!strcmp(conn->mg_conn.request_method, "POST") &&
(cl == NULL || to64(cl) > USE_POST_SIZE_LIMIT)) {
send_http_error(conn, 500);
}
}
#endif
return; return;
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment