diff src/os/win32/ngx_wsasend_chain.c @ 344:e366ba5db8f8

nginx-0.0.3-2004-06-01-10:04:46 import
author Igor Sysoev <igor@sysoev.ru>
date Tue, 01 Jun 2004 06:04:46 +0000
parents 6bdf858bff8c
children f2755a2885c8
line wrap: on
line diff
--- a/src/os/win32/ngx_wsasend_chain.c
+++ b/src/os/win32/ngx_wsasend_chain.c
@@ -241,180 +241,3 @@ ngx_chain_t *ngx_overlapped_wsasend_chai
 
     return cl;
 }
-
-
-#if 0
-
-ngx_chain_t *ngx_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in)
-{
-    int               rc;
-    char             *prev;
-    size_t            size, sent;
-    LPWSABUF          wsabuf;
-    ngx_err_t         err;
-    ngx_event_t      *wev;
-    ngx_array_t       wsabufs;
-    ngx_chain_t      *ce;
-    LPWSAOVERLAPPED   ovlp;
-
-#if 0
-
-iocp:
-    if ready
-       get result
-       update chain
-       return if done;
-    wsasend
-
-non-block
-    for ( ;; ) {
-       wsasend
-       if no again
-          update chain
-          return if done;
-    }
-
-
-    for ( ;; ) {
-
-        make buffers and limit data for both ovlp and nonblocked,
-                     configured in events module
-
-        if (iocp && ready) {
-            get result
-
-        } else {
-            if (file)
-                transmitfile
-            else
-                wsasend
-
-            if (iocp)
-                return chain
-            return chain if again
-            here is result
-        }
-
-        if (result)
-            update chain;
-            return chain if done
-        }
-    }
-
-
-#endif
-
-    wev = c->write;
-
-    if (((ngx_event_flags & NGX_USE_AIO_EVENT) && !wev->ready)
-        || ((ngx_event_flags & NGX_USE_AIO_EVENT) == 0))
-    {
-        /*
-         * WSABUFs must be 4-byte aligned otherwise
-         * WSASend() will return undocumented WSAEINVAL error.
-         */
-
-        ngx_init_array(wsabufs, c->pool, 10, sizeof(WSABUF), NGX_CHAIN_ERROR);
-
-        prev = NULL;
-        wsabuf = NULL;
-
-        /* create the WSABUF and coalesce the neighbouring chain entries */
-        for (ce = in; ce; ce = ce->next) {
-
-            if (prev == ce->hunk->pos) {
-                wsabuf->len += ce->hunk->last - ce->hunk->pos;
-                prev = ce->hunk->last;
-
-            } else {
-                ngx_test_null(wsabuf, ngx_push_array(&wsabufs),
-                              NGX_CHAIN_ERROR);
-                wsabuf->buf = ce->hunk->pos;
-                wsabuf->len = ce->hunk->last - ce->hunk->pos;
-                prev = ce->hunk->last;
-            }
-        }
-
-        if (ngx_event_flags & NGX_USE_AIO_EVENT) {
-            ovlp = (LPWSAOVERLAPPED) &c->write->ovlp;
-            ngx_memzero(ovlp, sizeof(WSAOVERLAPPED));
-
-        } else {
-            ovlp = NULL;
-        }
-
-        rc = WSASend(c->fd, wsabufs.elts, wsabufs.nelts, &sent, 0, ovlp, NULL);
-
-        if (rc == -1) {
-            err = ngx_errno;
-            if (err == WSA_IO_PENDING) {
-                sent = 0;
-
-            } else if (err == WSAEWOULDBLOCK) {
-                sent = 0;
-                ngx_log_error(NGX_LOG_INFO, c->log, err, "WSASend() EAGAIN");
-
-            } else {
-                ngx_log_error(NGX_LOG_CRIT, c->log, err, "WSASend() failed");
-                return NGX_CHAIN_ERROR;
-            }
-
-        } else {
-
-            if (ngx_event_flags & NGX_USE_IOCP_EVENT) {
-
-                /*
-                 * If a socket was bound with I/O completion port then
-                 * GetQueuedCompletionStatus() would anyway return its status
-                 * despite that WSASend() was already completed.
-                 */
-
-                sent = 0;
-            }
-        }
-
-    } else {
-        if (ngx_event_flags & NGX_USE_IOCP_EVENT) {
-            wev->ready = 0;
-
-            /* the overlapped WSASend() completed */
-
-            if (wev->ovlp.error) {
-                ngx_log_error(NGX_LOG_ERR, c->log, wev->ovlp.error,
-                              "WSASend() failed");
-                return NGX_CHAIN_ERROR;
-            }
-
-            sent = wev->available;
-        }
-    }
-
-    ngx_log_debug(c->log, "WSASend(): %d" _ sent);
-
-    c->sent += sent;
-
-    for (ce = in; ce && sent > 0; ce = ce->next) {
-
-        size = ce->hunk->last - ce->hunk->pos;
-
-        if (sent >= size) {
-            sent -= size;
-
-            if (ce->hunk->type & NGX_HUNK_IN_MEMORY) {
-                ce->hunk->pos = ce->hunk->last;
-            }
-
-            continue;
-        }
-
-        if (ce->hunk->type & NGX_HUNK_IN_MEMORY) {
-            ce->hunk->pos += sent;
-        }
-
-        break;
-    }
-
-    return ce;
-}
-
-#endif