Mercurial > hg > nginx
comparison src/event/ngx_event_recv.c @ 7:b5481d6fbbd4
nginx-0.0.1-2002-08-29-20:59:54 import
author | Igor Sysoev <igor@sysoev.ru> |
---|---|
date | Thu, 29 Aug 2002 16:59:54 +0000 |
parents | 669801705ab1 |
children | e8cdc2989cee |
comparison
equal
deleted
inserted
replaced
6:669801705ab1 | 7:b5481d6fbbd4 |
---|---|
4 #include <ngx_errno.h> | 4 #include <ngx_errno.h> |
5 #include <ngx_log.h> | 5 #include <ngx_log.h> |
6 #include <ngx_recv.h> | 6 #include <ngx_recv.h> |
7 #include <ngx_connection.h> | 7 #include <ngx_connection.h> |
8 | 8 |
9 int ngx_event_recv_core(ngx_event_t *ev, char *buf, size_t size) | 9 int ngx_event_recv_core(ngx_connection_t *c, char *buf, size_t size) |
10 { | 10 { |
11 int n; | 11 int n; |
12 ngx_err_t err; | 12 ngx_err_t err; |
13 ngx_connection_t *c; | |
14 | 13 |
15 c = (ngx_connection_t *) ev->data; | 14 if (c->read->timedout) { |
16 | |
17 if (ev->timedout) { | |
18 ngx_set_socket_errno(NGX_ETIMEDOUT); | 15 ngx_set_socket_errno(NGX_ETIMEDOUT); |
19 ngx_log_error(NGX_LOG_ERR, ev->log, NGX_ETIMEDOUT, "recv() failed"); | 16 ngx_log_error(NGX_LOG_ERR, c->log, NGX_ETIMEDOUT, "recv() failed"); |
20 return NGX_ERROR; | 17 return NGX_ERROR; |
21 } | 18 } |
22 | 19 |
23 #if (HAVE_KQUEUE) | 20 #if (HAVE_KQUEUE) |
24 ngx_log_debug(ev->log, "ngx_event_recv: eof:%d, avail:%d, err:%d" _ | 21 ngx_log_debug(c->log, "ngx_event_recv: eof:%d, avail:%d, err:%d" _ |
25 ev->eof _ ev->available _ ev->error); | 22 c->read->eof _ c->read->available _ c->read->error); |
26 #if !(USE_KQUEUE) | 23 #if !(USE_KQUEUE) |
27 if (ngx_event_type == NGX_KQUEUE_EVENT) | 24 if (ngx_event_type == NGX_KQUEUE_EVENT) |
28 #endif | 25 #endif |
29 if (ev->eof && ev->available == 0) { | 26 if (c->read->eof && c->read->available == 0) { |
30 if (ev->error) { | 27 if (c->read->error) { |
31 ngx_log_error(NGX_LOG_ERR, ev->log, ev->error, "recv() failed"); | 28 ngx_log_error(NGX_LOG_ERR, c->log, c->read->error, |
29 "recv() failed"); | |
32 return NGX_ERROR; | 30 return NGX_ERROR; |
33 } | 31 } |
34 | 32 |
35 return 0; | 33 return 0; |
36 } | 34 } |
40 | 38 |
41 if (n == -1) { | 39 if (n == -1) { |
42 err = ngx_socket_errno; | 40 err = ngx_socket_errno; |
43 | 41 |
44 if (err == NGX_EAGAIN) { | 42 if (err == NGX_EAGAIN) { |
45 ngx_log_error(NGX_LOG_INFO, ev->log, err, "recv() returns EAGAIN"); | 43 ngx_log_error(NGX_LOG_INFO, c->log, err, "recv() returns EAGAIN"); |
46 return NGX_AGAIN; | 44 return NGX_AGAIN; |
47 } | 45 } |
48 | 46 |
49 ngx_log_error(NGX_LOG_ERR, ev->log, err, "recv() failed"); | 47 ngx_log_error(NGX_LOG_ERR, c->log, err, "recv() failed"); |
50 return NGX_ERROR; | 48 return NGX_ERROR; |
51 } | 49 } |
52 | 50 |
53 #if (HAVE_KQUEUE) | 51 #if (HAVE_KQUEUE) |
54 #if !(USE_KQUEUE) | 52 #if !(USE_KQUEUE) |
55 if (ngx_event_type == NGX_KQUEUE_EVENT) | 53 if (ngx_event_type == NGX_KQUEUE_EVENT) |
56 #endif | 54 #endif |
57 ev->available -= n; | 55 c->read->available -= n; |
58 #endif | 56 #endif |
59 | 57 |
60 return n; | 58 return n; |
61 } | 59 } |