Mercurial > hg > nginx-vendor-1-0
comparison src/os/unix/ngx_file_aio_read.c @ 644:ad25218fd14b NGINX_1_0_12
nginx 1.0.12
*) Feature: the "TLSv1.1" and "TLSv1.2" parameters of the
"ssl_protocols" directive.
*) Feature: the "if" SSI command supports captures in regular
expressions.
*) Bugfix: the "if" SSI command did not work inside the "block" command.
*) Bugfix: in AIO error handling on FreeBSD.
*) Bugfix: in the OpenSSL library initialization.
*) Bugfix: the "worker_cpu_affinity" directive might not work.
*) Bugfix: the "limit_conn_log_level" and "limit_req_log_level"
directives might not work.
*) Bugfix: the "read_ahead" directive might not work combined with
"try_files" and "open_file_cache".
*) Bugfix: the "proxy_cache_use_stale" directive with "error" parameter
did not return answer from cache if there were no live upstreams.
*) Bugfix: a segmentation fault might occur in a worker process if small
time was used in the "inactive" parameter of the "proxy_cache_path"
directive.
*) Bugfix: responses from cache might hang.
*) Bugfix: in error handling while connecting to a backend.
Thanks to Piotr Sikora.
*) Bugfix: in the "epoll" event method.
Thanks to Yichun Zhang.
*) Bugfix: the $sent_http_cache_control variable might contain a wrong
value if the "expires" directive was used.
Thanks to Yichun Zhang.
*) Bugfix: the "limit_rate" directive did not allow to use full
throughput, even if limit value was very high.
*) Bugfix: the "sendfile_max_chunk" directive did not work, if the
"limit_rate" directive was used.
*) Bugfix: nginx could not be built on Solaris; the bug had appeared in
1.0.11.
*) Bugfix: in the ngx_http_scgi_module.
*) Bugfix: in the ngx_http_mp4_module.
author | Igor Sysoev <http://sysoev.ru> |
---|---|
date | Mon, 06 Feb 2012 00:00:00 +0400 |
parents | 692f4d4d7f10 |
children |
comparison
equal
deleted
inserted
replaced
643:d81e1c257a02 | 644:ad25218fd14b |
---|---|
1 | 1 |
2 /* | 2 /* |
3 * Copyright (C) Igor Sysoev | 3 * Copyright (C) Igor Sysoev |
4 * Copyright (C) Nginx, Inc. | |
4 */ | 5 */ |
5 | 6 |
6 | 7 |
7 #include <ngx_config.h> | 8 #include <ngx_config.h> |
8 #include <ngx_core.h> | 9 #include <ngx_core.h> |
154 ngx_log_error(NGX_LOG_ALERT, file->log, err, | 155 ngx_log_error(NGX_LOG_ALERT, file->log, err, |
155 "aio_error(\"%V\") failed", &file->name); | 156 "aio_error(\"%V\") failed", &file->name); |
156 return NGX_ERROR; | 157 return NGX_ERROR; |
157 } | 158 } |
158 | 159 |
159 if (n != 0) { | 160 if (n == NGX_EINPROGRESS) { |
160 if (n == NGX_EINPROGRESS) { | 161 if (ev->ready) { |
161 if (ev->ready) { | 162 ev->ready = 0; |
162 ev->ready = 0; | 163 ngx_log_error(NGX_LOG_ALERT, file->log, n, |
163 ngx_log_error(NGX_LOG_ALERT, file->log, n, | 164 "aio_read(\"%V\") still in progress", |
164 "aio_read(\"%V\") still in progress", | 165 &file->name); |
165 &file->name); | 166 } |
166 } | 167 |
167 | 168 return NGX_AGAIN; |
168 return NGX_AGAIN; | |
169 } | |
170 | |
171 aio->err = n; | |
172 ev->ready = 0; | |
173 | |
174 ngx_log_error(NGX_LOG_CRIT, file->log, n, | |
175 "aio_read(\"%V\") failed", &file->name); | |
176 return NGX_ERROR; | |
177 } | 169 } |
178 | 170 |
179 n = aio_return(&aio->aiocb); | 171 n = aio_return(&aio->aiocb); |
180 | 172 |
181 if (n == -1) { | 173 if (n == -1) { |
182 err = ngx_errno; | 174 err = ngx_errno; |
183 aio->err = err; | 175 aio->err = err; |
184 ev->ready = 0; | 176 ev->ready = 1; |
185 | 177 |
186 ngx_log_error(NGX_LOG_ALERT, file->log, err, | 178 ngx_log_error(NGX_LOG_CRIT, file->log, err, |
187 "aio_return(\"%V\") failed", &file->name); | 179 "aio_return(\"%V\") failed", &file->name); |
188 return NGX_ERROR; | 180 return NGX_ERROR; |
189 } | 181 } |
190 | 182 |
191 aio->err = 0; | 183 aio->err = 0; |