|
|
|
@ -416,8 +416,8 @@ static void li_server_listen_cb(struct ev_loop *loop, ev_io *w, int revents) {
|
|
|
|
|
liServer *srv = sock->srv;
|
|
|
|
|
int s;
|
|
|
|
|
liSocketAddress remote_addr;
|
|
|
|
|
struct sockaddr sa;
|
|
|
|
|
socklen_t l = sizeof(sa);
|
|
|
|
|
liSockAddr sa;
|
|
|
|
|
socklen_t l;
|
|
|
|
|
UNUSED(loop);
|
|
|
|
|
UNUSED(revents);
|
|
|
|
|
|
|
|
|
@ -432,7 +432,8 @@ static void li_server_listen_cb(struct ev_loop *loop, ev_io *w, int revents) {
|
|
|
|
|
return;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
if (-1 == (s = accept(w->fd, &sa, &l))) break;
|
|
|
|
|
l = sizeof(sa);
|
|
|
|
|
if (-1 == (s = accept(w->fd, &sa.plain, &l))) break;
|
|
|
|
|
|
|
|
|
|
wrk = srv->main_worker;
|
|
|
|
|
min_load = g_atomic_int_get(&wrk->connection_load);
|
|
|
|
@ -440,13 +441,12 @@ static void li_server_listen_cb(struct ev_loop *loop, ev_io *w, int revents) {
|
|
|
|
|
if (l <= sizeof(sa)) {
|
|
|
|
|
remote_addr.addr = g_slice_alloc(l);
|
|
|
|
|
remote_addr.len = l;
|
|
|
|
|
memcpy(remote_addr.addr, &sa, l);
|
|
|
|
|
memcpy(remote_addr.addr, &sa.plain, l);
|
|
|
|
|
} else {
|
|
|
|
|
remote_addr = li_sockaddr_remote_from_socket(s);
|
|
|
|
|
}
|
|
|
|
|
l = sizeof(sa); /* reset l */
|
|
|
|
|
|
|
|
|
|
li_fd_init(s);
|
|
|
|
|
li_fd_no_block(s); /* we don't fork, don't care about FD_CLOEXEC */
|
|
|
|
|
|
|
|
|
|
for (i = 1; i < srv->worker_count; i++) {
|
|
|
|
|
liWorker *wt = g_array_index(srv->workers, liWorker*, i);
|
|
|
|
|