comparison src/event/ngx_event_recv.c @ 1:d220029ac7f3

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