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

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

124 * Resetting of timed out connection on close
125 * releases kernel memory associated with socket.
126 * This also causes sending TCP/IP RST to a peer.
127 */
128 ret = setsockopt(c->socket.fd, SOL_SOCKET, SO_LINGER, &linger_off,
129 sizeof(struct linger));
130
131 if (nxt_slow_path(ret != 0)) {
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

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

124 * Resetting of timed out connection on close
125 * releases kernel memory associated with socket.
126 * This also causes sending TCP/IP RST to a peer.
127 */
128 ret = setsockopt(c->socket.fd, SOL_SOCKET, SO_LINGER, &linger_off,
129 sizeof(struct linger));
130
131 if (nxt_slow_path(ret != 0)) {
132 nxt_log(task, NXT_LOG_CRIT, "setsockopt(%d, SO_LINGER) failed %E",
133 c->socket.fd, nxt_socket_errno);
132 nxt_alert(task, "setsockopt(%d, SO_LINGER) failed %E",
133 c->socket.fd, nxt_socket_errno);
134 }
135 }
136
137 c->write_state->close_handler(task, c, data);
138}
139
140
141void

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

200 return NULL;
201 }
202
203 sa->socklen = socklen;
204 sa->length = length;
205
206 ret = getsockname(c->socket.fd, &sa->u.sockaddr, &socklen);
207 if (nxt_slow_path(ret != 0)) {
134 }
135 }
136
137 c->write_state->close_handler(task, c, data);
138}
139
140
141void

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

200 return NULL;
201 }
202
203 sa->socklen = socklen;
204 sa->length = length;
205
206 ret = getsockname(c->socket.fd, &sa->u.sockaddr, &socklen);
207 if (nxt_slow_path(ret != 0)) {
208 nxt_log(task, NXT_LOG_CRIT, "getsockname(%d) failed", c->socket.fd);
208 nxt_alert(task, "getsockname(%d) failed", c->socket.fd);
209 return NULL;
210 }
211
212 c->local = sa;
213
214 nxt_sockaddr_text(sa);
215
216 /*
217 * TODO: here we can adjust the end of non-freeable block
218 * in c->mem_pool to the end of actual sockaddr length.
219 */
220
221 return sa;
222}
209 return NULL;
210 }
211
212 c->local = sa;
213
214 nxt_sockaddr_text(sa);
215
216 /*
217 * TODO: here we can adjust the end of non-freeable block
218 * in c->mem_pool to the end of actual sockaddr length.
219 */
220
221 return sa;
222}