Mercurial > hg > nginx-vendor-1-0
comparison src/core/ngx_cycle.c @ 2:cc9f381affaa NGINX_0_1_1
nginx 0.1.1
*) 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 <http://sysoev.ru> |
---|---|
date | Mon, 11 Oct 2004 00:00:00 +0400 |
parents | f0b350454894 |
children | 4b2dafa26fe2 |
comparison
equal
deleted
inserted
replaced
1:80bdda0151b0 | 2:cc9f381affaa |
---|---|
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", |