comparison src/os/win32/ngx_wsasend_chain.c @ 501:d4ea69372b94 release-0.1.25

nginx-0.1.25-RELEASE import *) Bugfix: nginx did run on Linux parisc. *) Feature: nginx now does not start under FreeBSD if the sysctl kern.ipc.somaxconn value is too big. *) Bugfix: if a request was internally redirected by the ngx_http_index_module module to the ngx_http_proxy_module or ngx_http_fastcgi_module modules, then the index file was not closed after request completion. *) Feature: the "proxy_pass" can be used in location with regular expression. *) Feature: the ngx_http_rewrite_filter_module module supports the condition like "if ($HTTP_USER_AGENT ~ MSIE)". *) Bugfix: nginx started too slow if the large number of addresses and text values were used in the "geo" directive. *) Change: a variable name must be declared as "$name" in the "geo" directive. The previous variant without "$" is still supported, but will be removed soon. *) Feature: the "%{VARIABLE}v" logging parameter. *) Feature: the "set $name value" directive. *) Bugfix: gcc 4.0 compatibility. *) Feature: the --with-openssl-opt=OPTIONS autoconfiguration directive.
author Igor Sysoev <igor@sysoev.ru>
date Sat, 19 Mar 2005 12:38:37 +0000
parents 8e8f3af115b5
children 4d9ea73a627a
comparison
equal deleted inserted replaced
500:9a0f304470f5 501:d4ea69372b94
10 10
11 11
12 #define NGX_WSABUFS 8 12 #define NGX_WSABUFS 8
13 13
14 14
15 ngx_chain_t *ngx_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in, 15 ngx_chain_t *
16 off_t limit) 16 ngx_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
17 { 17 {
18 int rc; 18 int rc;
19 u_char *prev; 19 u_char *prev;
20 u_long size, sent, send, prev_send; 20 u_long size, sent, send, prev_send;
21 ngx_uint_t complete; 21 ngx_uint_t complete;
22 ngx_err_t err; 22 ngx_err_t err;
23 ngx_event_t *wev; 23 ngx_event_t *wev;
24 ngx_array_t vec; 24 ngx_array_t vec;
25 ngx_chain_t *cl;
25 LPWSABUF wsabuf; 26 LPWSABUF wsabuf;
26 WSABUF wsabufs[NGX_WSABUFS]; 27 WSABUF wsabufs[NGX_WSABUFS];
27 ngx_chain_t *cl;
28 28
29 wev = c->write; 29 wev = c->write;
30 30
31 if (!wev->ready) { 31 if (!wev->ready) {
32 return in; 32 return in;
76 76
77 if (prev == cl->buf->pos) { 77 if (prev == cl->buf->pos) {
78 wsabuf->len += cl->buf->last - cl->buf->pos; 78 wsabuf->len += cl->buf->last - cl->buf->pos;
79 79
80 } else { 80 } else {
81 if (!(wsabuf = ngx_array_push(&vec))) { 81 wsabuf = ngx_array_push(&vec);
82 if (wsabuf == NULL) {
82 return NGX_CHAIN_ERROR; 83 return NGX_CHAIN_ERROR;
83 } 84 }
84 85
85 wsabuf->buf = (char *) cl->buf->pos; 86 wsabuf->buf = (char *) cl->buf->pos;
86 wsabuf->len = cl->buf->last - cl->buf->pos; 87 wsabuf->len = cl->buf->last - cl->buf->pos;
152 in = cl; 153 in = cl;
153 } 154 }
154 } 155 }
155 156
156 157
157 ngx_chain_t *ngx_overlapped_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in, 158 ngx_chain_t *
158 off_t limit) 159 ngx_overlapped_wsasend_chain(ngx_connection_t *c, ngx_chain_t *in, off_t limit)
159 { 160 {
160 int rc; 161 int rc;
161 u_char *prev; 162 u_char *prev;
162 u_long size, send, sent; 163 u_long size, send, sent;
163 LPWSABUF wsabuf;
164 ngx_err_t err; 164 ngx_err_t err;
165 ngx_event_t *wev; 165 ngx_event_t *wev;
166 ngx_array_t vec; 166 ngx_array_t vec;
167 ngx_chain_t *cl; 167 ngx_chain_t *cl;
168 LPWSAOVERLAPPED ovlp; 168 LPWSAOVERLAPPED ovlp;
169 LPWSABUF wsabuf;
169 WSABUF wsabufs[NGX_WSABUFS]; 170 WSABUF wsabufs[NGX_WSABUFS];
170 171
171 wev = c->write; 172 wev = c->write;
172 173
173 if (!wev->ready) { 174 if (!wev->ready) {
220 221
221 if (prev == cl->buf->pos) { 222 if (prev == cl->buf->pos) {
222 wsabuf->len += cl->buf->last - cl->buf->pos; 223 wsabuf->len += cl->buf->last - cl->buf->pos;
223 224
224 } else { 225 } else {
225 if (!(wsabuf = ngx_array_push(&vec))) { 226 wsabuf = ngx_array_push(&vec);
227 if (wsabuf == NULL) {
226 return NGX_CHAIN_ERROR; 228 return NGX_CHAIN_ERROR;
227 } 229 }
228 230
229 wsabuf->buf = (char *) cl->buf->pos; 231 wsabuf->buf = (char *) cl->buf->pos;
230 wsabuf->len = cl->buf->last - cl->buf->pos; 232 wsabuf->len = cl->buf->last - cl->buf->pos;