Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/nginx/nginx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIgor Sysoev <igor@sysoev.ru>2004-06-01 10:04:46 +0400
committerIgor Sysoev <igor@sysoev.ru>2004-06-01 10:04:46 +0400
commit67f450d7bc2b847f07ad302fa3fd6fa46da784f0 (patch)
treead432c07b62f9145f78ba569e9a1ed51a3d41e17 /src/os/win32
parent369145cef1971e4273dc59340689c2d96f84d18a (diff)
nginx-0.0.3-2004-06-01-10:04:46 import
Diffstat (limited to 'src/os/win32')
-rw-r--r--src/os/win32/ngx_files.c2
-rw-r--r--src/os/win32/ngx_wsasend_chain.c177
2 files changed, 1 insertions, 178 deletions
diff --git a/src/os/win32/ngx_files.c b/src/os/win32/ngx_files.c
index 2185dcf5a..6ed4ff00f 100644
--- a/src/os/win32/ngx_files.c
+++ b/src/os/win32/ngx_files.c
@@ -143,7 +143,7 @@ ssize_t ngx_write_chain_to_file(ngx_file_t *file, ngx_chain_t *cl,
prev = buf;
size = 0;
- /* coalesce the neighbouring hunks */
+ /* coalesce the neighbouring bufs */
while (cl && prev == cl->buf->pos) {
size += cl->buf->last - cl->buf->pos;
diff --git a/src/os/win32/ngx_wsasend_chain.c b/src/os/win32/ngx_wsasend_chain.c
index 46e03da65..4ada9ea4e 100644
--- 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_chain(ngx_connection_t *c, ngx_chain_t *in)
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