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

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

19 nxt_conn_t *c;
20 nxt_sendbuf_t sb;
21 nxt_event_engine_t *engine;
22
23 c = obj;
24
25 nxt_debug(task, "conn write fd:%d", c->socket.fd);
26
1
2/*
3 * Copyright (C) Igor Sysoev
4 * Copyright (C) NGINX, Inc.
5 */
6
7#include <nxt_main.h>
8

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

19 nxt_conn_t *c;
20 nxt_sendbuf_t sb;
21 nxt_event_engine_t *engine;
22
23 c = obj;
24
25 nxt_debug(task, "conn write fd:%d", c->socket.fd);
26
27 if (c->socket.error != 0) {
28 goto error;
29 }
30
27 if (!c->socket.write_ready || c->write == NULL) {
28 return;
29 }
30
31 engine = task->thread->engine;
32
33 c->socket.write_handler = nxt_conn_io_write;
34 c->socket.error_handler = c->write_state->error_handler;

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

104
105 if (nxt_fd_event_is_disabled(c->socket.write)) {
106 nxt_fd_event_enable_write(engine, &c->socket);
107 }
108 }
109 }
110
111 if (ret == 0 || sb.sent != 0) {
31 if (!c->socket.write_ready || c->write == NULL) {
32 return;
33 }
34
35 engine = task->thread->engine;
36
37 c->socket.write_handler = nxt_conn_io_write;
38 c->socket.error_handler = c->write_state->error_handler;

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

108
109 if (nxt_fd_event_is_disabled(c->socket.write)) {
110 nxt_fd_event_enable_write(engine, &c->socket);
111 }
112 }
113 }
114
115 if (ret == 0 || sb.sent != 0) {
112 /* "ret == 0" means a sync buffer was processed. */
116 /*
117 * ret == 0 means a sync buffer was processed.
118 * ret == NXT_ERROR is ignored here if some data was sent,
119 * the error will be handled on the next nxt_conn_write() call.
120 */
113 c->sent += sb.sent;
114 nxt_work_queue_add(c->write_work_queue, c->write_state->ready_handler,
115 task, c, data);
121 c->sent += sb.sent;
122 nxt_work_queue_add(c->write_work_queue, c->write_state->ready_handler,
123 task, c, data);
116 /*
117 * Fall through if first operations were
118 * successful but the last one failed.
119 */
124 return;
120 }
121
125 }
126
122 if (nxt_slow_path(ret == NXT_ERROR)) {
123 nxt_fd_event_block_write(engine, &c->socket);
127 /* ret == NXT_ERROR */
124
128
125 nxt_work_queue_add(c->write_work_queue, c->write_state->error_handler,
126 task, c, data);
127 }
129 nxt_fd_event_block_write(engine, &c->socket);
130
131error:
132
133 nxt_work_queue_add(c->write_work_queue, c->write_state->error_handler,
134 task, c, data);
128}
129
130
131static void
132nxt_conn_write_timer_handler(nxt_task_t *task, void *obj, void *data)
133{
134 nxt_conn_t *c;
135 nxt_timer_t *timer;

--- 287 unchanged lines hidden ---
135}
136
137
138static void
139nxt_conn_write_timer_handler(nxt_task_t *task, void *obj, void *data)
140{
141 nxt_conn_t *c;
142 nxt_timer_t *timer;

--- 287 unchanged lines hidden ---