Mercurial > hg > nginx
comparison src/os/unix/ngx_freebsd_sendfile_chain.c @ 214:e0c502f15852
nginx-0.0.1-2003-12-22-12:40:48 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Mon, 22 Dec 2003 09:40:48 +0000 |
parents | c9da5900c79e |
children | f1d0e5f09c1e |
comparison
equal
deleted
inserted
replaced
213:f536f91e8e99 | 214:e0c502f15852 |
---|---|
42 } | 42 } |
43 | 43 |
44 #if (HAVE_KQUEUE) | 44 #if (HAVE_KQUEUE) |
45 | 45 |
46 if ((ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) && wev->kq_eof) { | 46 if ((ngx_event_flags & NGX_HAVE_KQUEUE_EVENT) && wev->kq_eof) { |
47 ngx_log_error(NGX_LOG_ERR, c->log, wev->kq_errno, | 47 ngx_log_error(NGX_LOG_INFO, c->log, wev->kq_errno, |
48 "kevent() reported about closed connection"); | 48 "kevent() reported about closed connection"); |
49 | 49 |
50 wev->error = 1; | 50 wev->error = 1; |
51 return NGX_CHAIN_ERROR; | 51 return NGX_CHAIN_ERROR; |
52 } | 52 } |
151 if (file) { | 151 if (file) { |
152 | 152 |
153 if (ngx_freebsd_use_tcp_nopush && !c->tcp_nopush) { | 153 if (ngx_freebsd_use_tcp_nopush && !c->tcp_nopush) { |
154 c->tcp_nopush = 1; | 154 c->tcp_nopush = 1; |
155 | 155 |
156 ngx_log_debug(c->log, "NOPUSH"); | 156 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, 0, "tcp_nopush"); |
157 | 157 |
158 if (ngx_tcp_nopush(c->fd) == NGX_ERROR) { | 158 if (ngx_tcp_nopush(c->fd) == NGX_ERROR) { |
159 ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno, | 159 ngx_log_error(NGX_LOG_CRIT, c->log, ngx_errno, |
160 ngx_tcp_nopush_n " failed"); | 160 ngx_tcp_nopush_n " failed"); |
161 return NGX_CHAIN_ERROR; | 161 return NGX_CHAIN_ERROR; |
191 if (err == NGX_EAGAIN) { | 191 if (err == NGX_EAGAIN) { |
192 eagain = 1; | 192 eagain = 1; |
193 } | 193 } |
194 | 194 |
195 if (err == NGX_EAGAIN || err == NGX_EINTR) { | 195 if (err == NGX_EAGAIN || err == NGX_EINTR) { |
196 ngx_log_error(NGX_LOG_INFO, c->log, err, | 196 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err, |
197 "sendfile() sent only " OFF_T_FMT " bytes", | 197 "sendfile() sent only " OFF_T_FMT " bytes", |
198 sent); | 198 sent); |
199 | 199 |
200 } else { | 200 } else { |
201 wev->error = 1; | 201 wev->error = 1; |
202 ngx_log_error(NGX_LOG_CRIT, c->log, err, | 202 ngx_log_error(NGX_LOG_CRIT, c->log, err, |
203 "sendfile() failed"); | 203 "sendfile() failed"); |
204 return NGX_CHAIN_ERROR; | 204 return NGX_CHAIN_ERROR; |
205 } | 205 } |
206 } | 206 } |
207 | 207 |
208 #if (NGX_DEBUG_WRITE_CHAIN) | 208 ngx_log_debug4(NGX_LOG_DEBUG_EVENT, c->log, 0, |
209 ngx_log_debug(c->log, "sendfile: %d, @%qd %qd:%d" _ | 209 "sendfile: %d, @" OFF_T_FMT " " OFF_T_FMT ":%d", |
210 rc _ file->file_pos _ sent _ fsize + hsize); | 210 rc, file->file_pos, sent, fsize + hsize); |
211 #endif | |
212 | 211 |
213 } else { | 212 } else { |
214 rc = writev(c->fd, header.elts, header.nelts); | 213 rc = writev(c->fd, header.elts, header.nelts); |
215 | 214 |
216 if (rc == -1) { | 215 if (rc == -1) { |
217 err = ngx_errno; | 216 err = ngx_errno; |
218 if (err == NGX_EAGAIN) { | 217 |
219 ngx_log_error(NGX_LOG_INFO, c->log, err, "writev() EAGAIN"); | 218 if (err == NGX_EINTR) { |
220 | |
221 } else if (err == NGX_EINTR) { | |
222 eintr = 1; | 219 eintr = 1; |
223 ngx_log_error(NGX_LOG_INFO, c->log, err, "writev() EINTR"); | 220 } |
221 | |
222 if (err == NGX_EAGAIN || err == NGX_EINTR) { | |
223 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, | |
224 "writev() not ready"); | |
224 | 225 |
225 } else { | 226 } else { |
226 wev->error = 1; | 227 wev->error = 1; |
227 ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed"); | 228 ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed"); |
228 return NGX_CHAIN_ERROR; | 229 return NGX_CHAIN_ERROR; |
229 } | 230 } |
230 } | 231 } |
231 | 232 |
232 sent = rc > 0 ? rc : 0; | 233 sent = rc > 0 ? rc : 0; |
233 | 234 |
234 #if (NGX_DEBUG_WRITE_CHAIN) | 235 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, 0, |
235 ngx_log_debug(c->log, "writev: %qd" _ sent); | 236 "writev: " OFF_T_FMT, sent); |
236 #endif | |
237 } | 237 } |
238 | 238 |
239 c->sent += sent; | 239 c->sent += sent; |
240 | 240 |
241 for (cl = in; cl; cl = cl->next) { | 241 for (cl = in; cl; cl = cl->next) { |