mirror of
https://github.com/nginx/nginx.git
synced 2025-02-25 18:55:26 -06:00
merge r3498, r3499:
opening files fixes: *) use non-blocking open() not to hang on FIFO files, etc. *) do not log misleading errno in "not a regular file" error
This commit is contained in:
parent
400683ac91
commit
9d4085af44
@ -487,7 +487,14 @@ ngx_open_and_stat_file(u_char *name, ngx_open_file_info_t *of, ngx_log_t *log)
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!of->log) {
|
if (!of->log) {
|
||||||
fd = ngx_open_file(name, NGX_FILE_RDONLY, NGX_FILE_OPEN, 0);
|
|
||||||
|
/*
|
||||||
|
* Use non-blocking open() not to hang on FIFO files, etc.
|
||||||
|
* This flag has no effect on a regular files.
|
||||||
|
*/
|
||||||
|
|
||||||
|
fd = ngx_open_file(name, NGX_FILE_RDONLY|NGX_FILE_NONBLOCK,
|
||||||
|
NGX_FILE_OPEN, 0);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
fd = ngx_open_file(name, NGX_FILE_APPEND, NGX_FILE_CREATE_OR_OPEN,
|
fd = ngx_open_file(name, NGX_FILE_APPEND, NGX_FILE_CREATE_OR_OPEN,
|
||||||
|
@ -179,7 +179,7 @@ ngx_http_gzip_static_handler(ngx_http_request_t *r)
|
|||||||
#if !(NGX_WIN32) /* the not regular files are probably Unix specific */
|
#if !(NGX_WIN32) /* the not regular files are probably Unix specific */
|
||||||
|
|
||||||
if (!of.is_file) {
|
if (!of.is_file) {
|
||||||
ngx_log_error(NGX_LOG_CRIT, log, ngx_errno,
|
ngx_log_error(NGX_LOG_CRIT, log, 0,
|
||||||
"\"%s\" is not a regular file", path.data);
|
"\"%s\" is not a regular file", path.data);
|
||||||
|
|
||||||
return NGX_HTTP_NOT_FOUND;
|
return NGX_HTTP_NOT_FOUND;
|
||||||
|
@ -188,7 +188,7 @@ ngx_http_static_handler(ngx_http_request_t *r)
|
|||||||
#if !(NGX_WIN32) /* the not regular files are probably Unix specific */
|
#if !(NGX_WIN32) /* the not regular files are probably Unix specific */
|
||||||
|
|
||||||
if (!of.is_file) {
|
if (!of.is_file) {
|
||||||
ngx_log_error(NGX_LOG_CRIT, log, ngx_errno,
|
ngx_log_error(NGX_LOG_CRIT, log, 0,
|
||||||
"\"%s\" is not a regular file", path.data);
|
"\"%s\" is not a regular file", path.data);
|
||||||
|
|
||||||
return NGX_HTTP_NOT_FOUND;
|
return NGX_HTTP_NOT_FOUND;
|
||||||
|
@ -64,6 +64,7 @@ typedef struct {
|
|||||||
#define NGX_FILE_OPEN 0
|
#define NGX_FILE_OPEN 0
|
||||||
#define NGX_FILE_TRUNCATE O_CREAT|O_TRUNC
|
#define NGX_FILE_TRUNCATE O_CREAT|O_TRUNC
|
||||||
#define NGX_FILE_APPEND O_WRONLY|O_APPEND
|
#define NGX_FILE_APPEND O_WRONLY|O_APPEND
|
||||||
|
#define NGX_FILE_NONBLOCK O_NONBLOCK
|
||||||
|
|
||||||
#define NGX_FILE_DEFAULT_ACCESS 0644
|
#define NGX_FILE_DEFAULT_ACCESS 0644
|
||||||
#define NGX_FILE_OWNER_ACCESS 0600
|
#define NGX_FILE_OWNER_ACCESS 0600
|
||||||
|
@ -64,6 +64,7 @@ ngx_fd_t ngx_open_file(u_char *name, u_long mode, u_long create, u_long access);
|
|||||||
#define NGX_FILE_WRONLY GENERIC_WRITE
|
#define NGX_FILE_WRONLY GENERIC_WRITE
|
||||||
#define NGX_FILE_RDWR GENERIC_READ|GENERIC_WRITE
|
#define NGX_FILE_RDWR GENERIC_READ|GENERIC_WRITE
|
||||||
#define NGX_FILE_APPEND FILE_APPEND_DATA|SYNCHRONIZE
|
#define NGX_FILE_APPEND FILE_APPEND_DATA|SYNCHRONIZE
|
||||||
|
#define NGX_FILE_NONBLOCK 0
|
||||||
|
|
||||||
#define NGX_FILE_CREATE_OR_OPEN OPEN_ALWAYS
|
#define NGX_FILE_CREATE_OR_OPEN OPEN_ALWAYS
|
||||||
#define NGX_FILE_OPEN OPEN_EXISTING
|
#define NGX_FILE_OPEN OPEN_EXISTING
|
||||||
|
Loading…
Reference in New Issue
Block a user