comparison src/core/ngx_cycle.c @ 487:f2c6a7373274 NGINX_0_7_51

nginx 0.7.51 *) Feature: the "try_files" directive supports a response code in the fallback parameter. *) Feature: now any response code can be used in the "return" directive. *) Bugfix: the "error_page" directive made an external redirect without query string; the bug had appeared in 0.7.44. *) Bugfix: if servers listened on several defined explicitly addresses, then virtual servers might not work; the bug had appeared in 0.7.39.
author Igor Sysoev <http://sysoev.ru>
date Sun, 12 Apr 2009 00:00:00 +0400
parents 6866b490272e
children 549994537f15
comparison
equal deleted inserted replaced
486:ba2ea8c4d60f 487:f2c6a7373274
373 ngx_open_file_n " \"%s\" failed", 373 ngx_open_file_n " \"%s\" failed",
374 file[i].name.data); 374 file[i].name.data);
375 goto failed; 375 goto failed;
376 } 376 }
377 377
378 #if (NGX_WIN32) 378 #if !(NGX_WIN32)
379 if (ngx_file_append_mode(file[i].fd) != NGX_OK) {
380 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
381 ngx_file_append_mode_n " \"%s\" failed",
382 file[i].name.data);
383 goto failed;
384 }
385 #else
386 if (fcntl(file[i].fd, F_SETFD, FD_CLOEXEC) == -1) { 379 if (fcntl(file[i].fd, F_SETFD, FD_CLOEXEC) == -1) {
387 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, 380 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
388 "fcntl(FD_CLOEXEC) \"%s\" failed", 381 "fcntl(FD_CLOEXEC) \"%s\" failed",
389 file[i].name.data); 382 file[i].name.data);
390 goto failed; 383 goto failed;
927 #if !(NGX_WIN32) 920 #if !(NGX_WIN32)
928 921
929 ngx_int_t 922 ngx_int_t
930 ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log) 923 ngx_create_pidfile(ngx_str_t *name, ngx_log_t *log)
931 { 924 {
932 size_t len; 925 size_t len;
933 ngx_uint_t trunc; 926 ngx_uint_t create;
934 ngx_file_t file; 927 ngx_file_t file;
935 u_char pid[NGX_INT64_LEN + 2]; 928 u_char pid[NGX_INT64_LEN + 2];
936 929
937 ngx_memzero(&file, sizeof(ngx_file_t)); 930 ngx_memzero(&file, sizeof(ngx_file_t));
938 931
939 file.name = *name; 932 file.name = *name;
940 file.log = log; 933 file.log = log;
941 934
942 trunc = ngx_test_config ? 0 : NGX_FILE_TRUNCATE; 935 create = ngx_test_config ? NGX_FILE_CREATE_OR_OPEN : NGX_FILE_TRUNCATE;
943 936
944 file.fd = ngx_open_file(file.name.data, NGX_FILE_RDWR, 937 file.fd = ngx_open_file(file.name.data, NGX_FILE_RDWR,
945 NGX_FILE_CREATE_OR_OPEN|trunc, 938 create, NGX_FILE_DEFAULT_ACCESS);
946 NGX_FILE_DEFAULT_ACCESS);
947 939
948 if (file.fd == NGX_INVALID_FILE) { 940 if (file.fd == NGX_INVALID_FILE) {
949 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno, 941 ngx_log_error(NGX_LOG_EMERG, log, ngx_errno,
950 ngx_open_file_n " \"%s\" failed", file.name.data); 942 ngx_open_file_n " \"%s\" failed", file.name.data);
951 return NGX_ERROR; 943 return NGX_ERROR;
1076 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 1068 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
1077 ngx_open_file_n " \"%s\" failed", file[i].name.data); 1069 ngx_open_file_n " \"%s\" failed", file[i].name.data);
1078 continue; 1070 continue;
1079 } 1071 }
1080 1072
1081 #if (NGX_WIN32) 1073 #if !(NGX_WIN32)
1082 if (ngx_file_append_mode(fd) == NGX_ERROR) {
1083 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
1084 ngx_file_append_mode_n " \"%s\" failed",
1085 file[i].name.data);
1086
1087 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
1088 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
1089 ngx_close_file_n " \"%s\" failed",
1090 file[i].name.data);
1091 }
1092
1093 continue;
1094 }
1095 #else
1096 if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) { 1074 if (user != (ngx_uid_t) NGX_CONF_UNSET_UINT) {
1097 ngx_file_info_t fi; 1075 ngx_file_info_t fi;
1098 1076
1099 if (ngx_file_info((const char *) file[i].name.data, &fi) == -1) { 1077 if (ngx_file_info((const char *) file[i].name.data, &fi) == -1) {
1100 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 1078 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,