3 * Copyright (C) Igor Sysoev
4 * Copyright (C) Nginx, Inc.
8 #include <ngx_config.h>
10 #include <ngx_event.h>
16 ngx_udp_unix_recv(ngx_connection_t
*c
, u_char
*buf
, size_t size
)
25 n
= recv(c
->fd
, buf
, size
, 0);
27 ngx_log_debug3(NGX_LOG_DEBUG_EVENT
, c
->log
, 0,
28 "recv: fd:%d %d of %d", c
->fd
, n
, size
);
31 if (ngx_event_flags
& NGX_USE_KQUEUE_EVENT
) {
35 * rev->available may be negative here because some additional
36 * bytes may be received between kevent() and recv()
39 if (rev
->available
<= 0) {
48 err
= ngx_socket_errno
;
50 if (err
== NGX_EAGAIN
|| err
== NGX_EINTR
) {
51 ngx_log_debug0(NGX_LOG_DEBUG_EVENT
, c
->log
, err
,
56 n
= ngx_connection_error(c
, err
, "recv() failed");
60 } while (err
== NGX_EINTR
);
71 #else /* ! NGX_HAVE_KQUEUE */
74 ngx_udp_unix_recv(ngx_connection_t
*c
, u_char
*buf
, size_t size
)
83 n
= recv(c
->fd
, buf
, size
, 0);
85 ngx_log_debug3(NGX_LOG_DEBUG_EVENT
, c
->log
, 0,
86 "recv: fd:%d %d of %d", c
->fd
, n
, size
);
92 err
= ngx_socket_errno
;
94 if (err
== NGX_EAGAIN
|| err
== NGX_EINTR
) {
95 ngx_log_debug0(NGX_LOG_DEBUG_EVENT
, c
->log
, err
,
100 n
= ngx_connection_error(c
, err
, "recv() failed");
104 } while (err
== NGX_EINTR
);
108 if (n
== NGX_ERROR
) {
115 #endif /* NGX_HAVE_KQUEUE */