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 }