summaryrefslogtreecommitdiffhomepage
path: root/src/nxt_listen_socket.c
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2017-02-22 15:09:59 +0300
committerIgor Sysoev <igor@sysoev.ru>2017-02-22 15:09:59 +0300
commit029942f4eb7196c2cff0d0e26bc6ff274138f7d8 (patch)
treef4686c4d7b9cd574fe94c6f4918479a580fecf75 /src/nxt_listen_socket.c
parent059a8642898a6bd4b47d13a1c1d599cd44af7e1c (diff)
downloadunit-029942f4eb7196c2cff0d0e26bc6ff274138f7d8.tar.gz
unit-029942f4eb7196c2cff0d0e26bc6ff274138f7d8.tar.bz2
I/O operations refactoring.
Diffstat (limited to 'src/nxt_listen_socket.c')
-rw-r--r--src/nxt_listen_socket.c38
1 files changed, 22 insertions, 16 deletions
diff --git a/src/nxt_listen_socket.c b/src/nxt_listen_socket.c
index 22b5bf8d..08751dfc 100644
--- a/src/nxt_listen_socket.c
+++ b/src/nxt_listen_socket.c
@@ -12,7 +12,8 @@ static u_char *nxt_listen_socket_log_handler(void *ctx, u_char *pos,
nxt_int_t
-nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
+nxt_listen_socket_create(nxt_task_t *task, nxt_listen_socket_t *ls,
+ nxt_bool_t bind_test)
{
nxt_log_t log, *old;
nxt_uint_t family;
@@ -31,12 +32,12 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
family = sa->u.sockaddr.sa_family;
- s = nxt_socket_create(family, sa->type, 0, ls->flags);
+ s = nxt_socket_create(task, family, sa->type, 0, ls->flags);
if (s == -1) {
goto socket_fail;
}
- if (nxt_socket_setsockopt(s, SOL_SOCKET, SO_REUSEADDR, 1) != NXT_OK) {
+ if (nxt_socket_setsockopt(task, s, SOL_SOCKET, SO_REUSEADDR, 1) != NXT_OK) {
goto fail;
}
@@ -48,7 +49,8 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
ipv6only = (ls->ipv6only == 1);
/* Ignore possible error. TODO: why? */
- (void) nxt_socket_setsockopt(s, IPPROTO_IPV6, IPV6_V6ONLY, ipv6only);
+ (void) nxt_socket_setsockopt(task, s, IPPROTO_IPV6, IPV6_V6ONLY,
+ ipv6only);
}
#endif
@@ -56,7 +58,7 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
#if 0
/* Ignore possible error. TODO: why? */
- (void) nxt_socket_setsockopt(s, SOL_SOCKET, SO_SNDBUF, 8192);
+ (void) nxt_socket_setsockopt(task, s, SOL_SOCKET, SO_SNDBUF, 8192);
#endif
@@ -65,12 +67,12 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
if (ls->read_after_accept) {
/* Defer accept() maximum at 1 second. */
/* Ignore possible error. TODO: why? */
- (void) nxt_socket_setsockopt(s, IPPROTO_TCP, TCP_DEFER_ACCEPT, 1);
+ (void) nxt_socket_setsockopt(task, s, IPPROTO_TCP, TCP_DEFER_ACCEPT, 1);
}
#endif
- switch (nxt_socket_bind(s, sa, bind_test)) {
+ switch (nxt_socket_bind(task, s, sa, bind_test)) {
case NXT_OK:
break;
@@ -103,11 +105,11 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
#endif
- nxt_log_debug(&log, "listen(%d, %d)", s, ls->backlog);
+ nxt_debug(task, "listen(%d, %d)", s, ls->backlog);
if (listen(s, ls->backlog) != 0) {
- nxt_log_alert(&log, "listen(%d, %d) failed %E",
- s, ls->backlog, nxt_socket_errno);
+ nxt_log(task, NXT_LOG_CRIT, "listen(%d, %d) failed %E",
+ s, ls->backlog, nxt_socket_errno);
goto fail;
}
@@ -118,7 +120,7 @@ nxt_listen_socket_create(nxt_listen_socket_t *ls, nxt_bool_t bind_test)
fail:
- nxt_socket_close(s);
+ nxt_socket_close(task, s);
socket_fail:
@@ -129,7 +131,8 @@ socket_fail:
nxt_int_t
-nxt_listen_socket_update(nxt_listen_socket_t *ls, nxt_listen_socket_t *prev)
+nxt_listen_socket_update(nxt_task_t *task, nxt_listen_socket_t *ls,
+ nxt_listen_socket_t *prev)
{
nxt_log_t log, *old;
nxt_thread_t *thr;
@@ -143,11 +146,11 @@ nxt_listen_socket_update(nxt_listen_socket_t *ls, nxt_listen_socket_t *prev)
log.ctx = ls->sockaddr;
thr->log = &log;
- nxt_log_debug(&log, "listen(%d, %d)", ls->socket, ls->backlog);
+ nxt_debug(task, "listen(%d, %d)", ls->socket, ls->backlog);
if (listen(ls->socket, ls->backlog) != 0) {
- nxt_log_alert(&log, "listen(%d, %d) failed %E",
- ls->socket, ls->backlog, nxt_socket_errno);
+ nxt_log(task, NXT_LOG_CRIT, "listen(%d, %d) failed %E",
+ ls->socket, ls->backlog, nxt_socket_errno);
goto fail;
}
@@ -183,6 +186,7 @@ nxt_listen_socket_pool_min_size(nxt_listen_socket_t *ls)
case AF_INET6:
ls->socklen = sizeof(struct sockaddr_in6);
+ ls->address_length = NXT_INET6_ADDR_STR_LEN;
size = offsetof(nxt_sockaddr_t, u) + sizeof(struct sockaddr_in6)
+ NXT_INET6_ADDR_STR_LEN + (sizeof(":65535") - 1);
@@ -206,6 +210,7 @@ nxt_listen_socket_pool_min_size(nxt_listen_socket_t *ls)
*/
ls->socklen = 3;
size = ls->socklen + sizeof("unix:") - 1;
+ ls->address_length = sizeof("unix:") - 1;
break;
@@ -213,6 +218,7 @@ nxt_listen_socket_pool_min_size(nxt_listen_socket_t *ls)
default:
ls->socklen = sizeof(struct sockaddr_in);
+ ls->address_length = NXT_INET_ADDR_STR_LEN;
size = offsetof(nxt_sockaddr_t, u) + sizeof(struct sockaddr_in)
+ NXT_INET_ADDR_STR_LEN + (sizeof(":65535") - 1);
@@ -248,5 +254,5 @@ nxt_listen_socket_log_handler(void *ctx, u_char *pos, u_char *end)
sa = ctx;
return nxt_sprintf(pos, end, " while creating listening socket on %*s",
- sa->text_len, sa->text);
+ sa->length, sa->start);
}