mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
Fixed ngx_open_cached_file() error handling.
If of.err is 0, it means that there was a memory allocation error and no further logging and/or processing is needed. The of.failed string can be only accessed if of.err is not 0.
This commit is contained in:
parent
eb017e75cf
commit
9ad18e43ac
@ -217,13 +217,13 @@ ngx_http_index_handler(ngx_http_request_t *r)
|
|||||||
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||||
!= NGX_OK)
|
!= NGX_OK)
|
||||||
{
|
{
|
||||||
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, of.err,
|
|
||||||
"%s \"%s\" failed", of.failed, path.data);
|
|
||||||
|
|
||||||
if (of.err == 0) {
|
if (of.err == 0) {
|
||||||
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
return NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
ngx_log_debug2(NGX_LOG_DEBUG_HTTP, r->connection->log, of.err,
|
||||||
|
"%s \"%s\" failed", of.failed, path.data);
|
||||||
|
|
||||||
#if (NGX_HAVE_OPENAT)
|
#if (NGX_HAVE_OPENAT)
|
||||||
if (of.err == NGX_EMLINK
|
if (of.err == NGX_EMLINK
|
||||||
|| of.err == NGX_ELOOP)
|
|| of.err == NGX_ELOOP)
|
||||||
|
@ -552,6 +552,11 @@ ngx_http_log_script_write(ngx_http_request_t *r, ngx_http_log_script_t *script,
|
|||||||
if (ngx_open_cached_file(llcf->open_file_cache, &log, &of, r->pool)
|
if (ngx_open_cached_file(llcf->open_file_cache, &log, &of, r->pool)
|
||||||
!= NGX_OK)
|
!= NGX_OK)
|
||||||
{
|
{
|
||||||
|
if (of.err == 0) {
|
||||||
|
/* simulate successful logging */
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
|
ngx_log_error(NGX_LOG_CRIT, r->connection->log, ngx_errno,
|
||||||
"%s \"%s\" failed", of.failed, log.data);
|
"%s \"%s\" failed", of.failed, log.data);
|
||||||
/* simulate successful logging */
|
/* simulate successful logging */
|
||||||
|
@ -1314,6 +1314,11 @@ ngx_http_core_try_files_phase(ngx_http_request_t *r,
|
|||||||
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||||
!= NGX_OK)
|
!= NGX_OK)
|
||||||
{
|
{
|
||||||
|
if (of.err == 0) {
|
||||||
|
ngx_http_finalize_request(r, NGX_HTTP_INTERNAL_SERVER_ERROR);
|
||||||
|
return NGX_OK;
|
||||||
|
}
|
||||||
|
|
||||||
if (of.err != NGX_ENOENT
|
if (of.err != NGX_ENOENT
|
||||||
&& of.err != NGX_ENOTDIR
|
&& of.err != NGX_ENOTDIR
|
||||||
&& of.err != NGX_ENAMETOOLONG)
|
&& of.err != NGX_ENAMETOOLONG)
|
||||||
|
@ -1513,6 +1513,12 @@ ngx_http_script_file_code(ngx_http_script_engine_t *e)
|
|||||||
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
if (ngx_open_cached_file(clcf->open_file_cache, &path, &of, r->pool)
|
||||||
!= NGX_OK)
|
!= NGX_OK)
|
||||||
{
|
{
|
||||||
|
if (of.err == 0) {
|
||||||
|
e->ip = ngx_http_script_exit;
|
||||||
|
e->status = NGX_HTTP_INTERNAL_SERVER_ERROR;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
if (of.err != NGX_ENOENT
|
if (of.err != NGX_ENOENT
|
||||||
&& of.err != NGX_ENOTDIR
|
&& of.err != NGX_ENOTDIR
|
||||||
&& of.err != NGX_ENAMETOOLONG)
|
&& of.err != NGX_ENAMETOOLONG)
|
||||||
|
@ -443,6 +443,11 @@ ngx_stream_log_script_write(ngx_stream_session_t *s,
|
|||||||
s->connection->pool)
|
s->connection->pool)
|
||||||
!= NGX_OK)
|
!= NGX_OK)
|
||||||
{
|
{
|
||||||
|
if (of.err == 0) {
|
||||||
|
/* simulate successful logging */
|
||||||
|
return len;
|
||||||
|
}
|
||||||
|
|
||||||
ngx_log_error(NGX_LOG_CRIT, s->connection->log, ngx_errno,
|
ngx_log_error(NGX_LOG_CRIT, s->connection->log, ngx_errno,
|
||||||
"%s \"%s\" failed", of.failed, log.data);
|
"%s \"%s\" failed", of.failed, log.data);
|
||||||
/* simulate successful logging */
|
/* simulate successful logging */
|
||||||
|
Loading…
Reference in New Issue
Block a user