mirror of
https://github.com/cesanta/mongoose.git
synced 2025-06-10 19:33:06 +08:00
mongoose: fix http pipeline
mongoose: fix formatting mongoose: fix formatting mongoose: remove debugging messages PUBLISHED_FROM=1194e018001cc5f2b598096593d7aac4ec8dc04d
This commit is contained in:
parent
127f27e375
commit
d16dbc197f
@ -6159,6 +6159,7 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
}
|
}
|
||||||
#endif /* MG_ENABLE_HTTP_STREAMING_MULTIPART */
|
#endif /* MG_ENABLE_HTTP_STREAMING_MULTIPART */
|
||||||
|
|
||||||
|
again:
|
||||||
req_len = mg_parse_http(io->buf, io->len, hm, is_req);
|
req_len = mg_parse_http(io->buf, io->len, hm, is_req);
|
||||||
|
|
||||||
if (req_len > 0 &&
|
if (req_len > 0 &&
|
||||||
@ -6252,7 +6253,10 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
/* Whole HTTP message is fully buffered, call event handler */
|
/* Whole HTTP message is fully buffered, call event handler */
|
||||||
mg_http_call_endpoint_handler(nc, trigger_ev, hm);
|
mg_http_call_endpoint_handler(nc, trigger_ev, hm);
|
||||||
mbuf_remove(io, hm->message.len);
|
mbuf_remove(io, hm->message.len);
|
||||||
pd->rcvd = 0;
|
pd->rcvd -= hm->message.len;
|
||||||
|
if (io->len > 0) {
|
||||||
|
goto again;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -787,6 +787,7 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
}
|
}
|
||||||
#endif /* MG_ENABLE_HTTP_STREAMING_MULTIPART */
|
#endif /* MG_ENABLE_HTTP_STREAMING_MULTIPART */
|
||||||
|
|
||||||
|
again:
|
||||||
req_len = mg_parse_http(io->buf, io->len, hm, is_req);
|
req_len = mg_parse_http(io->buf, io->len, hm, is_req);
|
||||||
|
|
||||||
if (req_len > 0 &&
|
if (req_len > 0 &&
|
||||||
@ -880,7 +881,10 @@ void mg_http_handler(struct mg_connection *nc, int ev,
|
|||||||
/* Whole HTTP message is fully buffered, call event handler */
|
/* Whole HTTP message is fully buffered, call event handler */
|
||||||
mg_http_call_endpoint_handler(nc, trigger_ev, hm);
|
mg_http_call_endpoint_handler(nc, trigger_ev, hm);
|
||||||
mbuf_remove(io, hm->message.len);
|
mbuf_remove(io, hm->message.len);
|
||||||
pd->rcvd = 0;
|
pd->rcvd -= hm->message.len;
|
||||||
|
if (io->len > 0) {
|
||||||
|
goto again;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -2057,20 +2057,19 @@ static void http_pipeline_handler(struct mg_connection *c, int ev,
|
|||||||
int *status = (int *) c->mgr->user_data;
|
int *status = (int *) c->mgr->user_data;
|
||||||
if (ev == MG_EV_HTTP_REQUEST) {
|
if (ev == MG_EV_HTTP_REQUEST) {
|
||||||
/* Server request handler */
|
/* Server request handler */
|
||||||
mg_send_response_line(c, 200, "Content-Type: text/plain\r\n");
|
mg_send_response_line(c, 200,
|
||||||
|
"Content-Type: text/plain\r\nContent-Length: 5\r\n");
|
||||||
mg_printf(c, "Hello");
|
mg_printf(c, "Hello");
|
||||||
c->flags |= MG_F_SEND_AND_CLOSE;
|
|
||||||
*status = *status + 1;
|
*status = *status + 1;
|
||||||
} else if (ev == MG_EV_HTTP_REPLY) {
|
} else if (ev == MG_EV_HTTP_REPLY) {
|
||||||
/* Client reply handler */
|
/* Client reply handler */
|
||||||
*status = *status + 10;
|
*status = *status + 10;
|
||||||
c->flags |= MG_F_CLOSE_IMMEDIATELY;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static const char *test_http_pipeline(void) {
|
static const char *test_http_pipeline(void) {
|
||||||
struct mg_mgr mgr;
|
struct mg_mgr mgr;
|
||||||
struct mg_connection *lc, *nc1, *nc2;
|
struct mg_connection *lc, *nc1;
|
||||||
const char *local_addr = "127.0.0.1:7777";
|
const char *local_addr = "127.0.0.1:7777";
|
||||||
int status = 0;
|
int status = 0;
|
||||||
|
|
||||||
@ -2079,10 +2078,7 @@ static const char *test_http_pipeline(void) {
|
|||||||
mg_set_protocol_http_websocket(lc);
|
mg_set_protocol_http_websocket(lc);
|
||||||
ASSERT(nc1 = mg_connect(&mgr, local_addr, http_pipeline_handler));
|
ASSERT(nc1 = mg_connect(&mgr, local_addr, http_pipeline_handler));
|
||||||
mg_set_protocol_http_websocket(nc1);
|
mg_set_protocol_http_websocket(nc1);
|
||||||
mg_printf(nc1, "GET / HTTP/1.1\r\n\r\n");
|
mg_printf(nc1, "GET / HTTP/1.1\r\n\r\nGET / HTTP/1.1\r\n\r\n");
|
||||||
ASSERT(nc2 = mg_connect(&mgr, local_addr, http_pipeline_handler));
|
|
||||||
mg_set_protocol_http_websocket(nc2);
|
|
||||||
mg_printf(nc2, "GET / HTTP/1.1\r\n\r\n");
|
|
||||||
poll_until(&mgr, 1, c_int_eq, &status, (void *) 22);
|
poll_until(&mgr, 1, c_int_eq, &status, (void *) 22);
|
||||||
ASSERT_EQ(status, 22);
|
ASSERT_EQ(status, 22);
|
||||||
mg_mgr_free(&mgr);
|
mg_mgr_free(&mgr);
|
||||||
|
Loading…
Reference in New Issue
Block a user