comparison src/os/unix/ngx_solaris_sendfilev_chain.c @ 50:72eb30262aac NGINX_0_1_25

nginx 0.1.25 *) 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 <http://sysoev.ru>
date Sat, 19 Mar 2005 00:00:00 +0300
parents 45fe5b98a9de
children df17fbafec8f
comparison
equal deleted inserted replaced
49:93dabbc9efb9 50:72eb30262aac
45 ngx_int_t eintr, complete; 45 ngx_int_t eintr, complete;
46 ngx_err_t err; 46 ngx_err_t err;
47 sendfilevec_t *sfv, sfvs[NGX_SENDFILEVECS]; 47 sendfilevec_t *sfv, sfvs[NGX_SENDFILEVECS];
48 ngx_array_t vec; 48 ngx_array_t vec;
49 ngx_event_t *wev; 49 ngx_event_t *wev;
50 ngx_chain_t *cl, *tail; 50 ngx_chain_t *cl;
51 51
52 wev = c->write; 52 wev = c->write;
53 53
54 if (!wev->ready) { 54 if (!wev->ready) {
55 return in; 55 return in;
105 105
106 if (prev == cl->buf->pos) { 106 if (prev == cl->buf->pos) {
107 sfv->sfv_len += (size_t) size; 107 sfv->sfv_len += (size_t) size;
108 108
109 } else { 109 } else {
110 if (!(sfv = ngx_array_push(&vec))) { 110 sfv = ngx_array_push(&vec);
111 if (sfv == NULL) {
111 return NGX_CHAIN_ERROR; 112 return NGX_CHAIN_ERROR;
112 } 113 }
113 114
114 sfv->sfv_fd = SFV_FD_SELF; 115 sfv->sfv_fd = SFV_FD_SELF;
115 sfv->sfv_flag = 0; 116 sfv->sfv_flag = 0;
138 139
139 if (fd == cl->buf->file->fd && fprev == cl->buf->file_pos) { 140 if (fd == cl->buf->file->fd && fprev == cl->buf->file_pos) {
140 sfv->sfv_len += (size_t) size; 141 sfv->sfv_len += (size_t) size;
141 142
142 } else { 143 } else {
143 if (!(sfv = ngx_array_push(&vec))) { 144 sfv = ngx_array_push(&vec);
145 if (sfv == NULL) {
144 return NGX_CHAIN_ERROR; 146 return NGX_CHAIN_ERROR;
145 } 147 }
146 148
147 fd = cl->buf->file->fd; 149 fd = cl->buf->file->fd;
148 sfv->sfv_fd = fd; 150 sfv->sfv_fd = fd;