mirror of
https://github.com/cesanta/mongoose.git
synced 2025-06-12 20:59:03 +08:00
Merge branch 'master' of ssh://github.com/valenok/mongoose
This commit is contained in:
commit
b5704850db
@ -13,7 +13,7 @@ static void send_file(struct mg_connection *conn, const char *path) {
|
|||||||
|
|
||||||
if (stat(path, &st) == 0 && (fp = fopen(path, "rb")) != NULL) {
|
if (stat(path, &st) == 0 && (fp = fopen(path, "rb")) != NULL) {
|
||||||
mg_printf(conn, "--myboundary\r\nContent-Type: image/jpeg\r\n"
|
mg_printf(conn, "--myboundary\r\nContent-Type: image/jpeg\r\n"
|
||||||
"Content-Length: %zu\r\n\r\n", st.st_size);
|
"Content-Length: %llu\r\n\r\n", (unsigned long long) st.st_size);
|
||||||
while ((n = fread(buf, 1, sizeof(buf), fp)) > 0) {
|
while ((n = fread(buf, 1, sizeof(buf), fp)) > 0) {
|
||||||
mg_write(conn, buf, n);
|
mg_write(conn, buf, n);
|
||||||
}
|
}
|
||||||
|
16
mongoose.c
16
mongoose.c
@ -1638,7 +1638,7 @@ size_t mg_printf(struct mg_connection *conn, const char *fmt, ...) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static void ns_forward(struct ns_connection *from, struct ns_connection *to) {
|
static void ns_forward(struct ns_connection *from, struct ns_connection *to) {
|
||||||
DBG(("%p -> %p %zu bytes", from, to, from->recv_iobuf.len));
|
DBG(("%p -> %p %lu bytes", from, to, (unsigned long)from->recv_iobuf.len));
|
||||||
ns_send(to, from->recv_iobuf.buf, from->recv_iobuf.len);
|
ns_send(to, from->recv_iobuf.buf, from->recv_iobuf.len);
|
||||||
iobuf_remove(&from->recv_iobuf, from->recv_iobuf.len);
|
iobuf_remove(&from->recv_iobuf, from->recv_iobuf.len);
|
||||||
}
|
}
|
||||||
@ -3443,7 +3443,7 @@ static void handle_put(struct connection *conn, const char *path) {
|
|||||||
#endif
|
#endif
|
||||||
send_http_error(conn, 500, "open(%s): %s", path, strerror(errno));
|
send_http_error(conn, 500, "open(%s): %s", path, strerror(errno));
|
||||||
} else {
|
} else {
|
||||||
DBG(("PUT [%s] %zu", path, conn->ns_conn->recv_iobuf.len));
|
DBG(("PUT [%s] %lu", path, (unsigned long) conn->ns_conn->recv_iobuf.len));
|
||||||
conn->endpoint_type = EP_PUT;
|
conn->endpoint_type = EP_PUT;
|
||||||
ns_set_close_on_exec(conn->endpoint.fd);
|
ns_set_close_on_exec(conn->endpoint.fd);
|
||||||
range = mg_get_header(&conn->mg_conn, "Content-Range");
|
range = mg_get_header(&conn->mg_conn, "Content-Range");
|
||||||
@ -4067,7 +4067,7 @@ int mg_terminate_ssl(struct mg_connection *c, const char *cert) {
|
|||||||
|
|
||||||
// When clear-text reply is pushed to client, switch to SSL mode.
|
// When clear-text reply is pushed to client, switch to SSL mode.
|
||||||
n = send(conn->ns_conn->sock, ok, sizeof(ok) - 1, 0);
|
n = send(conn->ns_conn->sock, ok, sizeof(ok) - 1, 0);
|
||||||
DBG(("%p %zu %d SEND", c, sizeof(ok) - 1, n));
|
DBG(("%p %lu %d SEND", c, (unsigned long)sizeof(ok) - 1, n));
|
||||||
conn->ns_conn->send_iobuf.len = 0;
|
conn->ns_conn->send_iobuf.len = 0;
|
||||||
conn->endpoint_type = EP_USER; // To keep-alive in close_local_endpoint()
|
conn->endpoint_type = EP_USER; // To keep-alive in close_local_endpoint()
|
||||||
close_local_endpoint(conn); // Clean up current CONNECT request
|
close_local_endpoint(conn); // Clean up current CONNECT request
|
||||||
@ -4226,8 +4226,8 @@ static void open_local_endpoint(struct connection *conn, int skip_user) {
|
|||||||
if ((strcmp(conn->mg_conn.request_method, "POST") == 0 ||
|
if ((strcmp(conn->mg_conn.request_method, "POST") == 0 ||
|
||||||
strcmp(conn->mg_conn.request_method, "PUT") == 0) &&
|
strcmp(conn->mg_conn.request_method, "PUT") == 0) &&
|
||||||
(cl == NULL || to64(cl) > MONGOOSE_POST_SIZE_LIMIT)) {
|
(cl == NULL || to64(cl) > MONGOOSE_POST_SIZE_LIMIT)) {
|
||||||
send_http_error(conn, 500, "POST size > %zu",
|
send_http_error(conn, 500, "POST size > %lu",
|
||||||
(size_t) MONGOOSE_POST_SIZE_LIMIT);
|
(unsigned long) MONGOOSE_POST_SIZE_LIMIT);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -4266,6 +4266,8 @@ static void open_local_endpoint(struct connection *conn, int skip_user) {
|
|||||||
close_local_endpoint(conn);
|
close_local_endpoint(conn);
|
||||||
#endif
|
#endif
|
||||||
#ifndef MONGOOSE_NO_DAV
|
#ifndef MONGOOSE_NO_DAV
|
||||||
|
} else if (must_hide_file(conn, path)) {
|
||||||
|
send_http_error(conn, 404, NULL);
|
||||||
} else if (!strcmp(conn->mg_conn.request_method, "PROPFIND")) {
|
} else if (!strcmp(conn->mg_conn.request_method, "PROPFIND")) {
|
||||||
handle_propfind(conn, path, &st, exists);
|
handle_propfind(conn, path, &st, exists);
|
||||||
} else if (!strcmp(conn->mg_conn.request_method, "MKCOL")) {
|
} else if (!strcmp(conn->mg_conn.request_method, "MKCOL")) {
|
||||||
@ -4345,7 +4347,7 @@ static void on_recv_data(struct connection *conn) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
try_parse(conn);
|
try_parse(conn);
|
||||||
DBG(("%p %d %zu %d", conn, conn->request_len, io->len, conn->ns_conn->flags));
|
DBG(("%p %d %lu %d", conn, conn->request_len, (unsigned long)io->len, conn->ns_conn->flags));
|
||||||
if (conn->request_len < 0 ||
|
if (conn->request_len < 0 ||
|
||||||
(conn->request_len > 0 && !is_valid_uri(conn->mg_conn.uri))) {
|
(conn->request_len > 0 && !is_valid_uri(conn->mg_conn.uri))) {
|
||||||
send_http_error(conn, 400, NULL);
|
send_http_error(conn, 400, NULL);
|
||||||
@ -4399,7 +4401,7 @@ static void process_response(struct connection *conn) {
|
|||||||
struct iobuf *io = &conn->ns_conn->recv_iobuf;
|
struct iobuf *io = &conn->ns_conn->recv_iobuf;
|
||||||
|
|
||||||
try_parse(conn);
|
try_parse(conn);
|
||||||
DBG(("%p %d %zu", conn, conn->request_len, io->len));
|
DBG(("%p %d %lu", conn, conn->request_len, (unsigned long)io->len));
|
||||||
if (conn->request_len < 0 ||
|
if (conn->request_len < 0 ||
|
||||||
(conn->request_len == 0 && io->len > MAX_REQUEST_SIZE)) {
|
(conn->request_len == 0 && io->len > MAX_REQUEST_SIZE)) {
|
||||||
call_http_client_handler(conn);
|
call_http_client_handler(conn);
|
||||||
|
Loading…
Reference in New Issue
Block a user