comparison src/core/ngx_cycle.c @ 452:23fb87bddda1 release-0.1.1

nginx-0.1.1-RELEASE import *) Feature: the gzip_types directive. *) Feature: the tcp_nodelay directive. *) Feature: the send_lowat directive is working not only on OSes that support kqueue NOTE_LOWAT, but also on OSes that support SO_SNDLOWAT. *) Feature: the setproctitle() emulation for Linux and Solaris. *) Bugfix: the "Location" header rewrite bug fixed while the proxying. *) Bugfix: the ngx_http_chunked_module module may get caught in an endless loop. *) Bugfix: the /dev/poll module bugs fixed. *) Bugfix: the responses were corrupted when the temporary files were used while the proxying. *) Bugfix: the unescaped requests were passed to the backend. *) Bugfix: while the build configuration on Linux 2.4 the --with-poll_module parameter was required.
author Igor Sysoev <igor@sysoev.ru>
date Mon, 11 Oct 2004 15:07:03 +0000
parents 3b1e8c9df9ad
children 295d97d70c69
comparison
equal deleted inserted replaced
451:f40362e47689 452:23fb87bddda1
613 { 613 {
614 ngx_fd_t fd; 614 ngx_fd_t fd;
615 ngx_uint_t i; 615 ngx_uint_t i;
616 ngx_list_part_t *part; 616 ngx_list_part_t *part;
617 ngx_open_file_t *file; 617 ngx_open_file_t *file;
618 #if !(WIN32)
619 ngx_file_info_t fi;
620 #endif
618 621
619 part = &cycle->open_files.part; 622 part = &cycle->open_files.part;
620 file = part->elts; 623 file = part->elts;
621 624
622 for (i = 0; /* void */ ; i++) { 625 for (i = 0; /* void */ ; i++) {
670 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 673 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
671 ngx_close_file_n " \"%s\" failed", 674 ngx_close_file_n " \"%s\" failed",
672 file[i].name.data); 675 file[i].name.data);
673 } 676 }
674 } 677 }
678
679 if (ngx_file_info((const char *) file[i].name.data, &fi) == -1) {
680 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
681 ngx_file_info_n " \"%s\" failed",
682 file[i].name.data);
683
684 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
685 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
686 ngx_close_file_n " \"%s\" failed",
687 file[i].name.data);
688 }
689 }
690
691 if ((fi.st_mode & (S_IRUSR|S_IWUSR)) != (S_IRUSR|S_IWUSR)) {
692
693 fi.st_mode |= (S_IRUSR|S_IWUSR);
694
695 if (chmod((const char *) file[i].name.data, fi.st_mode) == -1) {
696 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
697 "chmod \"%s\" failed",
698 file[i].name.data);
699
700 if (ngx_close_file(fd) == NGX_FILE_ERROR) {
701 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
702 ngx_close_file_n " \"%s\" failed",
703 file[i].name.data);
704 }
705 }
706 }
675 } 707 }
676 708
677 if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) { 709 if (fcntl(fd, F_SETFD, FD_CLOEXEC) == -1) {
678 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno, 710 ngx_log_error(NGX_LOG_EMERG, cycle->log, ngx_errno,
679 "fcntl(FD_CLOEXEC) \"%s\" failed", 711 "fcntl(FD_CLOEXEC) \"%s\" failed",