mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-18 08:49:57 -04:00
from trunk: Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
svn:r929
This commit is contained in:
parent
abe3ac118c
commit
2821152f7f
@ -1,3 +1,6 @@
|
||||
Changes in 1.4.7-stable:
|
||||
o Fix a bug where headers arriving in multiple packets were not parsed; fix from Jiang Hong; test by me.
|
||||
|
||||
Changes in 1.4.6-stable:
|
||||
o evutil.h now includes <stdarg.h> directly
|
||||
o switch all uses of [v]snprintf over to evutil
|
||||
|
1
http.c
1
http.c
@ -1577,6 +1577,7 @@ evhttp_read_firstline(struct evhttp_connection *evcon,
|
||||
return;
|
||||
}
|
||||
|
||||
evcon->state = EVCON_READING_HEADERS;
|
||||
evhttp_read_header(evcon, req);
|
||||
}
|
||||
|
||||
|
@ -289,9 +289,20 @@ http_chunked_cb(struct evhttp_request *req, void *arg)
|
||||
event_once(-1, EV_TIMEOUT, http_chunked_trickle_cb, state, &when);
|
||||
}
|
||||
|
||||
static void
|
||||
http_complete_write(int fd, short what, void *arg)
|
||||
{
|
||||
struct bufferevent *bev = arg;
|
||||
const char *http_request = "host\r\n"
|
||||
"Connection: close\r\n"
|
||||
"\r\n";
|
||||
bufferevent_write(bev, http_request, strlen(http_request));
|
||||
}
|
||||
|
||||
static void
|
||||
http_basic_test(void)
|
||||
{
|
||||
struct timeval tv;
|
||||
struct bufferevent *bev;
|
||||
int fd;
|
||||
const char *http_request;
|
||||
@ -314,17 +325,19 @@ http_basic_test(void)
|
||||
bev = bufferevent_new(fd, http_readcb, http_writecb,
|
||||
http_errorcb, NULL);
|
||||
|
||||
/* first half of the http request */
|
||||
http_request =
|
||||
"GET /test HTTP/1.1\r\n"
|
||||
"Host: somehost\r\n"
|
||||
"Connection: close\r\n"
|
||||
"\r\n";
|
||||
"Host: some";
|
||||
|
||||
bufferevent_write(bev, http_request, strlen(http_request));
|
||||
timerclear(&tv);
|
||||
tv.tv_usec = 10000;
|
||||
event_once(-1, EV_TIMEOUT, http_complete_write, bev, &tv);
|
||||
|
||||
event_dispatch();
|
||||
|
||||
if (test_ok != 2) {
|
||||
if (test_ok != 3) {
|
||||
fprintf(stdout, "FAILED\n");
|
||||
exit(1);
|
||||
}
|
||||
@ -354,7 +367,7 @@ http_basic_test(void)
|
||||
|
||||
evhttp_free(http);
|
||||
|
||||
if (test_ok != 4) {
|
||||
if (test_ok != 5) {
|
||||
fprintf(stdout, "FAILED\n");
|
||||
exit(1);
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user