Deleted Added
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8
9
10static void nxt_conn_shutdown_handler(nxt_task_t *task, void *obj, void *data);
11static void nxt_conn_close_handler(nxt_task_t *task, void *obj, void *data);
12static void nxt_conn_close_timer_handler(nxt_task_t *task, void *obj,
13 void *data);
14static void nxt_conn_close_error_ignore(nxt_task_t *task, void *obj,
15 void *data);
16
17
18void
19nxt_conn_close(nxt_event_engine_t *engine, nxt_conn_t *c)
20{
21 int ret;
22 socklen_t len;
23 struct linger linger;
24 nxt_work_queue_t *wq;
25 nxt_work_handler_t handler;
26
27 nxt_debug(c->socket.task, "conn close fd:%d, to:%d",

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

64
65 nxt_work_queue_add(wq, handler, c->socket.task, c, engine);
66}
67
68
69static void
70nxt_conn_shutdown_handler(nxt_task_t *task, void *obj, void *data)
71{
72 nxt_conn_t *c;
73 nxt_event_engine_t *engine;
74
75 c = obj;
76 engine = data;
77
78 nxt_debug(task, "conn shutdown handler fd:%d", c->socket.fd);
79
80 c->socket.shutdown = 1;

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

85 task, c, engine);
86}
87
88
89static void
90nxt_conn_close_handler(nxt_task_t *task, void *obj, void *data)
91{
92 nxt_uint_t events_pending, timers_pending;
93 nxt_conn_t *c;
94 nxt_event_engine_t *engine;
95
96 c = obj;
97 engine = data;
98
99 nxt_debug(task, "conn close handler fd:%d", c->socket.fd);
100
101 /*

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

127
128 nxt_timer_add(engine, &c->write_timer, 0);
129}
130
131
132static void
133nxt_conn_close_timer_handler(nxt_task_t *task, void *obj, void *data)
134{
135 nxt_conn_t *c;
136 nxt_timer_t *timer;
137
138 timer = obj;
139
140 c = nxt_write_timer_conn(timer);
141
142 nxt_debug(task, "conn close timer handler fd:%d", c->socket.fd);
143
144 if (c->socket.fd != -1) {
145 nxt_socket_close(task, c->socket.fd);
146 c->socket.fd = -1;
147 }
148
149 nxt_work_queue_add(&task->thread->engine->fast_work_queue,
150 c->write_state->ready_handler,
151 task, c, c->socket.data);
152}
153
154
155static void
156nxt_conn_close_error_ignore(nxt_task_t *task, void *obj, void *data)
157{
158 nxt_debug(task, "conn close error ignore");
159}