diff src/os/unix/ngx_udp_recv.c @ 1689:0b592a68aade

ngx_udp_recv()
author Igor Sysoev <igor@sysoev.ru>
date Mon, 03 Dec 2007 16:46:46 +0000
parents src/os/unix/ngx_recv.c@3d732338aec2
children ac33852faaac
line wrap: on
line diff
copy from src/os/unix/ngx_recv.c
copy to src/os/unix/ngx_udp_recv.c
--- a/src/os/unix/ngx_recv.c
+++ b/src/os/unix/ngx_udp_recv.c
@@ -12,7 +12,7 @@
 #if (NGX_HAVE_KQUEUE)
 
 ssize_t
-ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size)
+ngx_udp_unix_recv(ngx_connection_t *c, u_char *buf, size_t size)
 {
     ssize_t       n;
     ngx_err_t     err;
@@ -20,32 +20,6 @@ ngx_unix_recv(ngx_connection_t *c, u_cha
 
     rev = c->read;
 
-    if (ngx_event_flags & NGX_USE_KQUEUE_EVENT) {
-        ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
-                       "recv: eof:%d, avail:%d, err:%d",
-                       rev->pending_eof, rev->available, rev->kq_errno);
-
-        if (rev->available == 0) {
-            if (rev->pending_eof) {
-                rev->ready = 0;
-                rev->eof = 1;
-
-                if (rev->kq_errno) {
-                    rev->error = 1;
-                    ngx_set_socket_errno(rev->kq_errno);
-
-                    return ngx_connection_error(c, rev->kq_errno,
-                               "kevent() reported about an closed connection");
-                }
-
-                return 0;
-
-            } else {
-                return NGX_AGAIN;
-            }
-        }
-    }
-
     do {
         n = recv(c->fd, buf, size, 0);
 
@@ -62,35 +36,9 @@ ngx_unix_recv(ngx_connection_t *c, u_cha
                  */
 
                 if (rev->available <= 0) {
-                    if (!rev->pending_eof) {
-                        rev->ready = 0;
-                    }
-
-                    if (rev->available < 0) {
-                        rev->available = 0;
-                    }
-                }
-
-                if (n == 0) {
-
-                    /*
-                     * on FreeBSD recv() may return 0 on closed socket
-                     * even if kqueue reported about available data
-                     */
-
-                    rev->eof = 1;
+                    rev->ready = 0;
                     rev->available = 0;
                 }
-
-                return n;
-            }
-
-            if ((size_t) n < size) {
-                rev->ready = 0;
-            }
-
-            if (n == 0) {
-                rev->eof = 1;
             }
 
             return n;
@@ -122,7 +70,7 @@ ngx_unix_recv(ngx_connection_t *c, u_cha
 #else /* ! NGX_HAVE_KQUEUE */
 
 ssize_t
-ngx_unix_recv(ngx_connection_t *c, u_char *buf, size_t size)
+ngx_udp_unix_recv(ngx_connection_t *c, u_char *buf, size_t size)
 {
     ssize_t       n;
     ngx_err_t     err;
@@ -136,19 +84,7 @@ ngx_unix_recv(ngx_connection_t *c, u_cha
         ngx_log_debug3(NGX_LOG_DEBUG_EVENT, c->log, 0,
                        "recv: fd:%d %d of %d", c->fd, n, size);
 
-        if (n == 0) {
-            rev->ready = 0;
-            rev->eof = 1;
-            return n;
-
-        } else if (n > 0) {
-
-            if ((size_t) n < size
-                && !(ngx_event_flags & NGX_USE_GREEDY_EVENT))
-            {
-                rev->ready = 0;
-            }
-
+        if (n >= 0) {
             return n;
         }