nxt_conn_accept.c (62:5e1efcc7b740) nxt_conn_accept.c (65:10688b89aa16)
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

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

77
78 return NULL;
79}
80
81
82static nxt_conn_t *
83nxt_conn_accept_alloc(nxt_task_t *task, nxt_listen_event_t *lev)
84{
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

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

77
78 return NULL;
79}
80
81
82static nxt_conn_t *
83nxt_conn_accept_alloc(nxt_task_t *task, nxt_listen_event_t *lev)
84{
85 nxt_mp_t *mp;
85 nxt_conn_t *c;
86 nxt_sockaddr_t *sa, *remote;
86 nxt_conn_t *c;
87 nxt_sockaddr_t *sa, *remote;
87 nxt_mem_pool_t *mp;
88 nxt_event_engine_t *engine;
89 nxt_listen_socket_t *ls;
90
91 engine = task->thread->engine;
92
93 if (engine->connections < engine->max_connections) {
94
88 nxt_event_engine_t *engine;
89 nxt_listen_socket_t *ls;
90
91 engine = task->thread->engine;
92
93 if (engine->connections < engine->max_connections) {
94
95 mp = nxt_mem_pool_create(lev->listen->mem_pool_size);
95 mp = nxt_mp_create(1024, 128, 256, 32);
96
97 if (nxt_fast_path(mp != NULL)) {
96
97 if (nxt_fast_path(mp != NULL)) {
98 /* This allocation cannot fail. */
99 c = nxt_conn_create(mp, lev->socket.task);
98 c = nxt_conn_create(mp, lev->socket.task);
99 if (nxt_slow_path(c == NULL)) {
100 goto fail;
101 }
100
101 lev->next = c;
102 c->socket.read_work_queue = lev->socket.read_work_queue;
103 c->socket.write_ready = 1;
104 c->listen = lev;
105
106 ls = lev->listen;
102
103 lev->next = c;
104 c->socket.read_work_queue = lev->socket.read_work_queue;
105 c->socket.write_ready = 1;
106 c->listen = lev;
107
108 ls = lev->listen;
107 /* This allocation cannot fail. */
109
108 remote = nxt_sockaddr_alloc(mp, ls->socklen, ls->address_length);
110 remote = nxt_sockaddr_alloc(mp, ls->socklen, ls->address_length);
111 if (nxt_slow_path(remote == NULL)) {
112 goto fail;
113 }
114
109 c->remote = remote;
110
111 sa = ls->sockaddr;
112 remote->type = sa->type;
113 /*
114 * Set address family for unspecified Unix domain,
115 * because these sockaddr's are not be passed to accept().
116 */
117 remote->u.sockaddr.sa_family = sa->u.sockaddr.sa_family;
118
119 return c;
120 }
115 c->remote = remote;
116
117 sa = ls->sockaddr;
118 remote->type = sa->type;
119 /*
120 * Set address family for unspecified Unix domain,
121 * because these sockaddr's are not be passed to accept().
122 */
123 remote->u.sockaddr.sa_family = sa->u.sockaddr.sa_family;
124
125 return c;
126 }
127
128 fail:
129
130 nxt_mp_destroy(mp);
121 }
122
123 return NULL;
124}
125
126
127static void
128nxt_conn_listen_handler(nxt_task_t *task, void *obj, void *data)

--- 238 unchanged lines hidden ---
131 }
132
133 return NULL;
134}
135
136
137static void
138nxt_conn_listen_handler(nxt_task_t *task, void *obj, void *data)

--- 238 unchanged lines hidden ---