nxt_socket.c (494:7c83ddcc1c42) nxt_socket.c (564:762f8c976ead)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 14 unchanged lines hidden (view full) ---

23 type |= SOCK_NONBLOCK;
24 }
25
26#endif
27
28 s = socket(domain, type, protocol);
29
30 if (nxt_slow_path(s == -1)) {
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

--- 14 unchanged lines hidden (view full) ---

23 type |= SOCK_NONBLOCK;
24 }
25
26#endif
27
28 s = socket(domain, type, protocol);
29
30 if (nxt_slow_path(s == -1)) {
31 nxt_log(task, NXT_LOG_CRIT, "socket(%ui, 0x%uXi, %ui) failed %E",
32 domain, type, protocol, nxt_socket_errno);
31 nxt_alert(task, "socket(%ui, 0x%uXi, %ui) failed %E",
32 domain, type, protocol, nxt_socket_errno);
33 return s;
34 }
35
36 nxt_debug(task, "socket(): %d", s);
37
38#if !(NXT_HAVE_SOCK_NONBLOCK)
39
40 if (flags & NXT_NONBLOCK) {

--- 11 unchanged lines hidden (view full) ---

52
53void
54nxt_socket_close(nxt_task_t *task, nxt_socket_t s)
55{
56 if (nxt_fast_path(close(s) == 0)) {
57 nxt_debug(task, "socket close(%d)", s);
58
59 } else {
33 return s;
34 }
35
36 nxt_debug(task, "socket(): %d", s);
37
38#if !(NXT_HAVE_SOCK_NONBLOCK)
39
40 if (flags & NXT_NONBLOCK) {

--- 11 unchanged lines hidden (view full) ---

52
53void
54nxt_socket_close(nxt_task_t *task, nxt_socket_t s)
55{
56 if (nxt_fast_path(close(s) == 0)) {
57 nxt_debug(task, "socket close(%d)", s);
58
59 } else {
60 nxt_log(task, NXT_LOG_CRIT, "socket close(%d) failed %E",
61 s, nxt_socket_errno);
60 nxt_alert(task, "socket close(%d) failed %E", s, nxt_socket_errno);
62 }
63}
64
65
66void
67nxt_socket_defer_accept(nxt_task_t *task, nxt_socket_t s, nxt_sockaddr_t *sa)
68{
69#if (NXT_HAVE_UNIX_DOMAIN)

--- 24 unchanged lines hidden (view full) ---

94 len = sizeof(val);
95
96 if (nxt_fast_path(getsockopt(s, level, sockopt, &val, &len) == 0)) {
97 nxt_debug(task, "getsockopt(%d, %ui, %s): %d",
98 s, level, nxt_socket_sockopt_name(level, sockopt), val);
99 return val;
100 }
101
61 }
62}
63
64
65void
66nxt_socket_defer_accept(nxt_task_t *task, nxt_socket_t s, nxt_sockaddr_t *sa)
67{
68#if (NXT_HAVE_UNIX_DOMAIN)

--- 24 unchanged lines hidden (view full) ---

93 len = sizeof(val);
94
95 if (nxt_fast_path(getsockopt(s, level, sockopt, &val, &len) == 0)) {
96 nxt_debug(task, "getsockopt(%d, %ui, %s): %d",
97 s, level, nxt_socket_sockopt_name(level, sockopt), val);
98 return val;
99 }
100
102 nxt_log(task, NXT_LOG_CRIT, "getsockopt(%d, %ui, %s) failed %E",
103 s, level, nxt_socket_sockopt_name(level, sockopt),
104 nxt_socket_errno);
101 nxt_alert(task, "getsockopt(%d, %ui, %s) failed %E",
102 s, level, nxt_socket_sockopt_name(level, sockopt),
103 nxt_socket_errno);
105
106 return -1;
107}
108
109
110nxt_int_t
111nxt_socket_setsockopt(nxt_task_t *task, nxt_socket_t s, nxt_uint_t level,
112 nxt_uint_t sockopt, int val)
113{
114 socklen_t len;
115
116 len = sizeof(val);
117
118 if (nxt_fast_path(setsockopt(s, level, sockopt, &val, len) == 0)) {
119 nxt_debug(task, "setsockopt(%d, %ui, %s): %d",
120 s, level, nxt_socket_sockopt_name(level, sockopt), val);
121 return NXT_OK;
122 }
123
104
105 return -1;
106}
107
108
109nxt_int_t
110nxt_socket_setsockopt(nxt_task_t *task, nxt_socket_t s, nxt_uint_t level,
111 nxt_uint_t sockopt, int val)
112{
113 socklen_t len;
114
115 len = sizeof(val);
116
117 if (nxt_fast_path(setsockopt(s, level, sockopt, &val, len) == 0)) {
118 nxt_debug(task, "setsockopt(%d, %ui, %s): %d",
119 s, level, nxt_socket_sockopt_name(level, sockopt), val);
120 return NXT_OK;
121 }
122
124 nxt_log(task, NXT_LOG_CRIT, "setsockopt(%d, %ui, %s, %d) failed %E",
125 s, level, nxt_socket_sockopt_name(level, sockopt),
126 val, nxt_socket_errno);
123 nxt_alert(task, "setsockopt(%d, %ui, %s, %d) failed %E",
124 s, level, nxt_socket_sockopt_name(level, sockopt), val,
125 nxt_socket_errno);
127
128 return NXT_ERROR;
129}
130
131
132static const char *
133nxt_socket_sockopt_name(nxt_uint_t level, nxt_uint_t sockopt)
134{

--- 63 unchanged lines hidden (view full) ---

198 }
199
200 err = nxt_socket_errno;
201
202 if (err == NXT_EADDRINUSE && test) {
203 return NXT_DECLINED;
204 }
205
126
127 return NXT_ERROR;
128}
129
130
131static const char *
132nxt_socket_sockopt_name(nxt_uint_t level, nxt_uint_t sockopt)
133{

--- 63 unchanged lines hidden (view full) ---

197 }
198
199 err = nxt_socket_errno;
200
201 if (err == NXT_EADDRINUSE && test) {
202 return NXT_DECLINED;
203 }
204
206 nxt_log(task, NXT_LOG_CRIT, "bind(%d, %*s) failed %E",
207 s, (size_t) sa->length, nxt_sockaddr_start(sa), err);
205 nxt_alert(task, "bind(%d, %*s) failed %E",
206 s, (size_t) sa->length, nxt_sockaddr_start(sa), err);
208
209 return NXT_ERROR;
210}
211
212
213nxt_int_t
214nxt_socket_connect(nxt_task_t *task, nxt_socket_t s, nxt_sockaddr_t *sa)
215{

--- 34 unchanged lines hidden (view full) ---

250 case NXT_ENETUNREACH:
251 case NXT_EHOSTDOWN:
252 case NXT_EHOSTUNREACH:
253 level = NXT_LOG_ERR;
254 ret = NXT_ERROR;
255 break;
256
257 default:
207
208 return NXT_ERROR;
209}
210
211
212nxt_int_t
213nxt_socket_connect(nxt_task_t *task, nxt_socket_t s, nxt_sockaddr_t *sa)
214{

--- 34 unchanged lines hidden (view full) ---

249 case NXT_ENETUNREACH:
250 case NXT_EHOSTDOWN:
251 case NXT_EHOSTUNREACH:
252 level = NXT_LOG_ERR;
253 ret = NXT_ERROR;
254 break;
255
256 default:
258 level = NXT_LOG_CRIT;
257 level = NXT_LOG_ALERT;
259 ret = NXT_ERROR;
260 }
261
262 nxt_log(task, level, "connect(%d, %*s) failed %E",
263 s, (size_t) sa->length, nxt_sockaddr_start(sa), err);
264
265 return ret;
266}

--- 22 unchanged lines hidden (view full) ---

289 case NXT_ENETDOWN:
290 case NXT_ENETUNREACH:
291 case NXT_EHOSTDOWN:
292 case NXT_EHOSTUNREACH:
293 level = NXT_LOG_ERR;
294 break;
295
296 default:
258 ret = NXT_ERROR;
259 }
260
261 nxt_log(task, level, "connect(%d, %*s) failed %E",
262 s, (size_t) sa->length, nxt_sockaddr_start(sa), err);
263
264 return ret;
265}

--- 22 unchanged lines hidden (view full) ---

288 case NXT_ENETDOWN:
289 case NXT_ENETUNREACH:
290 case NXT_EHOSTDOWN:
291 case NXT_EHOSTUNREACH:
292 level = NXT_LOG_ERR;
293 break;
294
295 default:
297 level = NXT_LOG_CRIT;
296 level = NXT_LOG_ALERT;
298 }
299
300 nxt_log(task, level, "shutdown(%d, %ui) failed %E", s, how, err);
301}
302
303
304nxt_uint_t
305nxt_socket_error_level(nxt_err_t err)

--- 6 unchanged lines hidden (view full) ---

312 case NXT_ETIMEDOUT:
313 case NXT_ENETDOWN:
314 case NXT_ENETUNREACH:
315 case NXT_EHOSTDOWN:
316 case NXT_EHOSTUNREACH:
317 return NXT_LOG_ERR;
318
319 default:
297 }
298
299 nxt_log(task, level, "shutdown(%d, %ui) failed %E", s, how, err);
300}
301
302
303nxt_uint_t
304nxt_socket_error_level(nxt_err_t err)

--- 6 unchanged lines hidden (view full) ---

311 case NXT_ETIMEDOUT:
312 case NXT_ENETDOWN:
313 case NXT_ENETUNREACH:
314 case NXT_EHOSTDOWN:
315 case NXT_EHOSTUNREACH:
316 return NXT_LOG_ERR;
317
318 default:
320 return NXT_LOG_CRIT;
319 return NXT_LOG_ALERT;
321 }
322}
320 }
321}