Commit 93c5335d authored by Sergey Lyubka's avatar Sergey Lyubka

USE_POST_SIZE_LIMIT -> MONGOOSE_USE_POST_SIZE_LIMIT, and unit test added

parent 192205b1
......@@ -675,9 +675,8 @@ static void send_http_error(struct connection *conn, int code,
body_len = mg_snprintf(body, sizeof(body), "%d %s\n", code, message);
if (fmt != NULL) {
body[body_len++] = '\n';
va_start(ap, fmt);
body_len += mg_snprintf(body + body_len, sizeof(body) - body_len, fmt, ap);
body_len += mg_vsnprintf(body + body_len, sizeof(body) - body_len, fmt, ap);
va_end(ap);
}
if (code >= 300 && code <= 399) {
......@@ -3358,9 +3357,9 @@ static void open_local_endpoint(struct connection *conn) {
{
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)) {
(cl == NULL || to64(cl) > MONGOOSE_USE_POST_SIZE_LIMIT)) {
send_http_error(conn, 500, "POST size > %zu",
(size_t) USE_POST_SIZE_LIMIT);
(size_t) MONGOOSE_USE_POST_SIZE_LIMIT);
}
}
#endif
......
......@@ -5,6 +5,7 @@
#define MONGOOSE_USE_IPV6
#define MONGOOSE_USE_SSL
#endif
#define MONGOOSE_USE_POST_SIZE_LIMIT 999
// USE_* definitions must be made before #include "mongoose.c" !
#include "mongoose.c"
......@@ -456,25 +457,44 @@ static int cb2(struct mg_connection *conn) {
return ret_val;
}
static int cb4h(struct mg_connection *conn) {
mg_send_data(conn, ":-)", 3);
return MG_REPLY_COMPLETED;
}
static int cb4(struct mg_connection *conn) {
if (conn->status_code == MG_CONNECT_SUCCESS) {
mg_printf(conn, "%s", "POST /x HTTP/1.0\r\nContent-Length: 999999\r\n\r\n");
return MG_REPLY_TO_BE_CONTINUED;
} else {
sprintf((char *) conn->connection_param, "%.*s",
(int) conn->content_len, conn->content);
}
return MG_REPLY_COMPLETED;
}
static int cb3(struct mg_connection *conn) {
sprintf((char *) conn->connection_param, "%d", conn->status_code);
return 1;
}
static const char *test_mg_connect(void) {
char buf2[40] = "", buf3[40] = "";
char buf2[40] = "", buf3[40] = "", buf4[40] = "";
struct mg_server *server = mg_create_server(NULL);
ASSERT(mg_set_option(server, "listening_port", LISTENING_ADDR) == NULL);
ASSERT(mg_set_option(server, "document_root", ".") == NULL);
mg_add_uri_handler(server, "/x", cb4h);
ASSERT(mg_connect(server, "", 0, 0, NULL, NULL) == 0);
ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, cb2, buf2) == 1);
ASSERT(mg_connect(server, "127.0.0.1", 1, 0, cb3, buf3) == 1);
ASSERT(mg_connect(server, "127.0.0.1", atoi(HTTP_PORT), 0, cb4, buf4) == 1);
{ int i; for (i = 0; i < 50; i++) mg_poll_server(server, 0); }
ASSERT(strcmp(buf2, "add") == 0);
ASSERT(strcmp(buf3, "1") == 0);
ASSERT(strcmp(buf4, "500 Server Error\nPOST size > 999") == 0);
mg_destroy_server(&server);
return NULL;
......
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