Welcome! Log In Create A New Profile

Advanced

Re: fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается

Maxim Dounin
October 15, 2009 07:44AM
Hello!

On Thu, Oct 15, 2009 at 02:56:44PM +0400, Igor Sysoev wrote:

> On Thu, Oct 15, 2009 at 01:43:10PM +0400, Dmitry Koterov wrote:
>
> > Имею в PHP-коде вот такое:
> >
> > $this->_header("Expires: " . gmdate("D, d M Y H:i:s", *0x7F000000*)
> > . " GMT");
> >
> > В этом случае все кэшируется нормально. Стоит только поменять на
> >
> > $this->_header("Expires: " . gmdate("D, d M Y H:i:s", *0x7FF00000*)
> > . " GMT");
> >
> > (вместо 0x7F000000 поставить 0x7FF00000, добавив одну буковку F, т.е.
> > указать время чуть более в будущем) - и все, уже кэш-файлы не создаются.
> >
> > В конфиге nginx примерно следующее:
> >
> > fastcgi_cache merge;
> > fastcgi_cache_valid 200 304 404 240h;
> > fastcgi_cache_key
> > "$request_method|$http_if_modified_since|$http_if_none_match|$host|$request_uri";
> >
> > nginx/0.7.62. Похоже на баг или какую-то сильно недокументированную
> > особенность.
>
> А что показывает "uname -prs" ?
> nginx не понимает время >= 2038 года на платформах с 32-битным time_t.

А как насчёт патча? Или я что-то упустил из виду?

Maxim Dounin
# HG changeset patch
# User Maxim Dounin <mdounin@mdounin.ru>
# Date 1255606305 -14400
# Node ID e3d816df4a0af3a7a4bbebf220630cf8897c5688
# Parent 3ca2e495d9de60059e5bf5e8fb0ba11b9a4b8f23
Core: parse time in 2038 on 32-bit platforms.

diff --git a/src/http/ngx_http_parse_time.c b/src/http/ngx_http_parse_time.c
--- a/src/http/ngx_http_parse_time.c
+++ b/src/http/ngx_http_parse_time.c
@@ -231,8 +231,21 @@ ngx_http_parse_time(u_char *value, size_

#if (NGX_TIME_T_SIZE <= 4)

- if (year >= 2038) {
+ if (year > 2038) {
return NGX_ERROR;
+
+ }
+
+ if (year == 2038) {
+ /* Tue, 19 Jan 2038 03:14:07 == 0x7FFFFFFF */
+
+ if (month > 0) {
+ return NGX_ERROR;
+ }
+
+ if (day * 86400 + hour * 3600 + min * 60 + sec > 1653247) {
+ return NGX_ERROR;
+ }
}

#endif
Subject Author Posted

fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается

Dmitry Koterov October 15, 2009 05:52AM

Re: fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается

Igor Sysoev October 15, 2009 07:04AM

Re: fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается

Maxim Dounin October 15, 2009 07:44AM

Re: fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается Attachments

Igor Sysoev October 15, 2009 08:34AM

Re: fastcgi_cache: похоже на баг: если Expires очень большой (например, 0x7FF00000), кэширование отключается

Maxim Dounin October 15, 2009 10:14AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 234
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 500 on July 15, 2024
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready