Mercurial > hg > nginx
comparison src/os/unix/ngx_freebsd_sendfile_chain.c @ 216:f1d0e5f09c1e
nginx-0.0.1-2003-12-25-23:26:58 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 25 Dec 2003 20:26:58 +0000 |
parents | e0c502f15852 |
children | 05592fd7a436 |
comparison
equal
deleted
inserted
replaced
215:5adc2b75f8a5 | 216:f1d0e5f09c1e |
---|---|
24 { | 24 { |
25 int rc; | 25 int rc; |
26 char *prev; | 26 char *prev; |
27 off_t sent, fprev; | 27 off_t sent, fprev; |
28 size_t hsize, fsize, size; | 28 size_t hsize, fsize, size; |
29 ngx_int_t eintr, eagain; | 29 ngx_int_t eintr, eagain, level; |
30 struct iovec *iov; | 30 struct iovec *iov; |
31 struct sf_hdtr hdtr; | 31 struct sf_hdtr hdtr; |
32 ngx_err_t err; | 32 ngx_err_t err; |
33 ngx_hunk_t *file; | 33 ngx_hunk_t *file; |
34 ngx_array_t header, trailer; | 34 ngx_array_t header, trailer; |
57 file = NULL; | 57 file = NULL; |
58 fsize = 0; | 58 fsize = 0; |
59 hsize = 0; | 59 hsize = 0; |
60 eintr = 0; | 60 eintr = 0; |
61 eagain = 0; | 61 eagain = 0; |
62 level = NGX_LOG_CRIT; | |
62 | 63 |
63 ngx_init_array(header, c->pool, 10, sizeof(struct iovec), | 64 ngx_init_array(header, c->pool, 10, sizeof(struct iovec), |
64 NGX_CHAIN_ERROR); | 65 NGX_CHAIN_ERROR); |
65 ngx_init_array(trailer, c->pool, 10, sizeof(struct iovec), | 66 ngx_init_array(trailer, c->pool, 10, sizeof(struct iovec), |
66 NGX_CHAIN_ERROR); | 67 NGX_CHAIN_ERROR); |
184 if (rc == -1) { | 185 if (rc == -1) { |
185 err = ngx_errno; | 186 err = ngx_errno; |
186 | 187 |
187 if (err == NGX_EINTR) { | 188 if (err == NGX_EINTR) { |
188 eintr = 1; | 189 eintr = 1; |
189 } | 190 |
190 | 191 } else if (err == NGX_EAGAIN) { |
191 if (err == NGX_EAGAIN) { | |
192 eagain = 1; | 192 eagain = 1; |
193 | |
194 } else if (err == NGX_EPIPE) { | |
195 level = NGX_LOG_INFO; | |
193 } | 196 } |
194 | 197 |
195 if (err == NGX_EAGAIN || err == NGX_EINTR) { | 198 if (err == NGX_EAGAIN || err == NGX_EINTR) { |
196 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err, | 199 ngx_log_debug1(NGX_LOG_DEBUG_EVENT, c->log, err, |
197 "sendfile() sent only " OFF_T_FMT " bytes", | 200 "sendfile() sent only " OFF_T_FMT " bytes", |
198 sent); | 201 sent); |
199 | 202 |
200 } else { | 203 } else { |
201 wev->error = 1; | 204 wev->error = 1; |
202 ngx_log_error(NGX_LOG_CRIT, c->log, err, | 205 ngx_log_error(level, c->log, err, |
203 "sendfile() failed"); | 206 "sendfile() failed"); |
204 return NGX_CHAIN_ERROR; | 207 return NGX_CHAIN_ERROR; |
205 } | 208 } |
206 } | 209 } |
207 | 210 |
215 if (rc == -1) { | 218 if (rc == -1) { |
216 err = ngx_errno; | 219 err = ngx_errno; |
217 | 220 |
218 if (err == NGX_EINTR) { | 221 if (err == NGX_EINTR) { |
219 eintr = 1; | 222 eintr = 1; |
223 | |
224 } else if (err == NGX_EPIPE) { | |
225 level = NGX_LOG_INFO; | |
220 } | 226 } |
221 | 227 |
222 if (err == NGX_EAGAIN || err == NGX_EINTR) { | 228 if (err == NGX_EAGAIN || err == NGX_EINTR) { |
223 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, | 229 ngx_log_debug0(NGX_LOG_DEBUG_EVENT, c->log, err, |
224 "writev() not ready"); | 230 "writev() not ready"); |
225 | 231 |
226 } else { | 232 } else { |
227 wev->error = 1; | 233 wev->error = 1; |
228 ngx_log_error(NGX_LOG_CRIT, c->log, err, "writev() failed"); | 234 ngx_log_error(level, c->log, err, "writev() failed"); |
229 return NGX_CHAIN_ERROR; | 235 return NGX_CHAIN_ERROR; |
230 } | 236 } |
231 } | 237 } |
232 | 238 |
233 sent = rc > 0 ? rc : 0; | 239 sent = rc > 0 ? rc : 0; |