mirror of
https://github.com/cuberite/libevent.git
synced 2025-09-10 13:04:23 -04:00
Merge remote-tracking branch 'origin/patches-2.0'
Conflicts: buffer.c http.c
This commit is contained in:
commit
9852107f37
3
buffer.c
3
buffer.c
@ -2382,6 +2382,9 @@ evbuffer_write_iovec(struct evbuffer *buffer, evutil_socket_t fd,
|
|||||||
}
|
}
|
||||||
chain = chain->next;
|
chain = chain->next;
|
||||||
}
|
}
|
||||||
|
if (! i)
|
||||||
|
return 0;
|
||||||
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
{
|
{
|
||||||
DWORD bytesSent;
|
DWORD bytesSent;
|
||||||
|
1
evdns.c
1
evdns.c
@ -2533,6 +2533,7 @@ evdns_base_nameserver_add(struct evdns_base *base, unsigned long int address)
|
|||||||
{
|
{
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
int res;
|
int res;
|
||||||
|
memset(&sin, 0, sizeof(sin));
|
||||||
sin.sin_addr.s_addr = address;
|
sin.sin_addr.s_addr = address;
|
||||||
sin.sin_port = htons(53);
|
sin.sin_port = htons(53);
|
||||||
sin.sin_family = AF_INET;
|
sin.sin_family = AF_INET;
|
||||||
|
9
http.c
9
http.c
@ -3992,9 +3992,12 @@ bind_socket_ai(struct evutil_addrinfo *ai, int reuse)
|
|||||||
return (-1);
|
return (-1);
|
||||||
}
|
}
|
||||||
|
|
||||||
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on));
|
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void *)&on, sizeof(on))<0)
|
||||||
if (reuse)
|
goto out;
|
||||||
evutil_make_listen_socket_reuseable(fd);
|
if (reuse) {
|
||||||
|
if (evutil_make_listen_socket_reuseable(fd) < 0)
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
if (ai != NULL) {
|
if (ai != NULL) {
|
||||||
r = bind(fd, ai->ai_addr, (ev_socklen_t)ai->ai_addrlen);
|
r = bind(fd, ai->ai_addr, (ev_socklen_t)ai->ai_addrlen);
|
||||||
|
10
listener.c
10
listener.c
@ -227,9 +227,15 @@ evconnlistener_new_bind(struct event_base *base, evconnlistener_cb cb,
|
|||||||
if (fd == -1)
|
if (fd == -1)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&on, sizeof(on));
|
if (setsockopt(fd, SOL_SOCKET, SO_KEEPALIVE, (void*)&on, sizeof(on))<0) {
|
||||||
|
evutil_closesocket(fd);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
if (flags & LEV_OPT_REUSEABLE) {
|
if (flags & LEV_OPT_REUSEABLE) {
|
||||||
evutil_make_listen_socket_reuseable(fd);
|
if (evutil_make_listen_socket_reuseable(fd) < 0) {
|
||||||
|
evutil_closesocket(fd);
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (flags & LEV_OPT_DEFERRED_ACCEPT) {
|
if (flags & LEV_OPT_DEFERRED_ACCEPT) {
|
||||||
|
@ -70,8 +70,10 @@ read_cb(evutil_socket_t fd, short which, void *arg)
|
|||||||
long idx = (long) arg;
|
long idx = (long) arg;
|
||||||
|
|
||||||
recv(fd, &ch, sizeof(ch), 0);
|
recv(fd, &ch, sizeof(ch), 0);
|
||||||
if (idx >= 0)
|
if (idx >= 0) {
|
||||||
send(idx, "e", 1, 0);
|
if (send(idx, "e", 1, 0) < 0)
|
||||||
|
perror("send");
|
||||||
|
}
|
||||||
fired++;
|
fired++;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -112,7 +114,8 @@ run_once(int num_pipes)
|
|||||||
fired = 0;
|
fired = 0;
|
||||||
|
|
||||||
/* kick everything off with a single write */
|
/* kick everything off with a single write */
|
||||||
send(pipes[1], "e", 1, 0);
|
if (send(pipes[1], "e", 1, 0) < 0)
|
||||||
|
perror("send");
|
||||||
|
|
||||||
event_dispatch();
|
event_dispatch();
|
||||||
|
|
||||||
|
@ -115,11 +115,12 @@ frob_socket(evutil_socket_t sock)
|
|||||||
{
|
{
|
||||||
struct linger l;
|
struct linger l;
|
||||||
int one = 1;
|
int one = 1;
|
||||||
setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&one, sizeof(one));
|
if (setsockopt(sock, SOL_SOCKET, SO_REUSEADDR, (void*)&one, sizeof(one))<0)
|
||||||
|
perror("setsockopt(SO_REUSEADDR)");
|
||||||
l.l_onoff = 1;
|
l.l_onoff = 1;
|
||||||
l.l_linger = 0;
|
l.l_linger = 0;
|
||||||
if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (void*)&l, sizeof(l))<0)
|
if (setsockopt(sock, SOL_SOCKET, SO_LINGER, (void*)&l, sizeof(l))<0)
|
||||||
perror("setsockopt");
|
perror("setsockopt(SO_LINGER)");
|
||||||
}
|
}
|
||||||
|
|
||||||
static int
|
static int
|
||||||
|
@ -1052,7 +1052,6 @@ test_bufferevent_connect_hostname(void *arg)
|
|||||||
int expect_err5;
|
int expect_err5;
|
||||||
struct evdns_base *dns=NULL;
|
struct evdns_base *dns=NULL;
|
||||||
struct evdns_server_port *port=NULL;
|
struct evdns_server_port *port=NULL;
|
||||||
evutil_socket_t server_fd=-1;
|
|
||||||
struct sockaddr_in sin;
|
struct sockaddr_in sin;
|
||||||
int listener_port=-1;
|
int listener_port=-1;
|
||||||
ev_uint16_t dns_port=0;
|
ev_uint16_t dns_port=0;
|
||||||
@ -1154,8 +1153,6 @@ test_bufferevent_connect_hostname(void *arg)
|
|||||||
end:
|
end:
|
||||||
if (listener)
|
if (listener)
|
||||||
evconnlistener_free(listener);
|
evconnlistener_free(listener);
|
||||||
if (server_fd>=0)
|
|
||||||
evutil_closesocket(server_fd);
|
|
||||||
if (port)
|
if (port)
|
||||||
evdns_close_server_port(port);
|
evdns_close_server_port(port);
|
||||||
if (dns)
|
if (dns)
|
||||||
|
@ -104,7 +104,7 @@ test_edgetriggered(void *et)
|
|||||||
|
|
||||||
called = was_et = 0;
|
called = was_et = 0;
|
||||||
|
|
||||||
send(pair[0], test, (int)strlen(test)+1, 0);
|
tt_int_op(send(pair[0], test, (int)strlen(test)+1, 0), >, 0);
|
||||||
shutdown(pair[0], SHUT_WR);
|
shutdown(pair[0], SHUT_WR);
|
||||||
|
|
||||||
/* Initalize the event library */
|
/* Initalize the event library */
|
||||||
|
@ -162,7 +162,7 @@ regress_listener_error(void *arg)
|
|||||||
}
|
}
|
||||||
|
|
||||||
/* send, so that pair[0] will look 'readable'*/
|
/* send, so that pair[0] will look 'readable'*/
|
||||||
send(data->pair[1], "hello", 5, 0);
|
tt_int_op(send(data->pair[1], "hello", 5, 0), >, 0);
|
||||||
|
|
||||||
/* Start a listener with a bogus socket. */
|
/* Start a listener with a bogus socket. */
|
||||||
listener = evconnlistener_new(base, acceptcb, &count,
|
listener = evconnlistener_new(base, acceptcb, &count,
|
||||||
|
@ -108,7 +108,8 @@ getcert(void)
|
|||||||
|
|
||||||
name = X509_NAME_new();
|
name = X509_NAME_new();
|
||||||
tt_assert(name);
|
tt_assert(name);
|
||||||
tt_assert(NID_undef != (nid = OBJ_txt2nid("commonName")));
|
nid = OBJ_txt2nid("commonName");
|
||||||
|
tt_assert(NID_undef != nid);
|
||||||
tt_assert(0 != X509_NAME_add_entry_by_NID(
|
tt_assert(0 != X509_NAME_add_entry_by_NID(
|
||||||
name, nid, MBSTRING_ASC, (unsigned char*)"example.com",
|
name, nid, MBSTRING_ASC, (unsigned char*)"example.com",
|
||||||
-1, -1, 0));
|
-1, -1, 0));
|
||||||
|
@ -178,12 +178,16 @@ regress_dns_server_cb(struct evdns_server_request *req, void *data)
|
|||||||
return;
|
return;
|
||||||
} else if (!strcmp(tab->anstype, "A")) {
|
} else if (!strcmp(tab->anstype, "A")) {
|
||||||
struct in_addr in;
|
struct in_addr in;
|
||||||
evutil_inet_pton(AF_INET, tab->ans, &in);
|
if (!evutil_inet_pton(AF_INET, tab->ans, &in)) {
|
||||||
|
TT_DIE(("Bad A value %s in table", tab->ans));
|
||||||
|
}
|
||||||
evdns_server_request_add_a_reply(req, question, 1, &in.s_addr,
|
evdns_server_request_add_a_reply(req, question, 1, &in.s_addr,
|
||||||
100);
|
100);
|
||||||
} else if (!strcmp(tab->anstype, "AAAA")) {
|
} else if (!strcmp(tab->anstype, "AAAA")) {
|
||||||
struct in6_addr in6;
|
struct in6_addr in6;
|
||||||
evutil_inet_pton(AF_INET6, tab->ans, &in6);
|
if (!evutil_inet_pton(AF_INET6, tab->ans, &in6)) {
|
||||||
|
TT_DIE(("Bad AAAA value %s in table", tab->ans));
|
||||||
|
}
|
||||||
evdns_server_request_add_aaaa_reply(req,
|
evdns_server_request_add_aaaa_reply(req,
|
||||||
question, 1, &in6.s6_addr, 100);
|
question, 1, &in6.s6_addr, 100);
|
||||||
} else {
|
} else {
|
||||||
|
@ -106,7 +106,8 @@ main(int argc, char **argv)
|
|||||||
return (1);
|
return (1);
|
||||||
|
|
||||||
|
|
||||||
send(pair[0], test, (int)strlen(test)+1, 0);
|
if (send(pair[0], test, (int)strlen(test)+1, 0) < 0)
|
||||||
|
return (1);
|
||||||
shutdown(pair[0], SHUT_WR);
|
shutdown(pair[0], SHUT_WR);
|
||||||
|
|
||||||
/* Initalize the event library */
|
/* Initalize the event library */
|
||||||
|
Loading…
x
Reference in New Issue
Block a user