diff src/core/ngx_times.c @ 364:a39aab45a53f NGINX_0_6_26

nginx 0.6.26 *) Bugfix: the "proxy_store" and "fastcgi_store" directives did not check a response length. *) Bugfix: a segmentation fault occurred in worker process, if big value was used in a "expires" directive. Thanks to Joaquin Cuenca Abela. *) Bugfix: nginx incorrectly detected cache line size on Pentium 4. Thanks to Gena Makhomed. *) Bugfix: in proxied or FastCGI subrequests a client original method was used instead of the GET method. *) Bugfix: socket leak in HTTPS mode if deferred accept was used. Thanks to Ben Maurer. *) Bugfix: nginx issued the bogus error message "SSL_shutdown() failed (SSL: )"; bug appeared in 0.6.23. *) Bugfix: in HTTPS mode requests might fail with the "bad write retry" error; bug appeared in 0.6.23.
author Igor Sysoev <http://sysoev.ru>
date Mon, 11 Feb 2008 00:00:00 +0300
parents 05693816539c
children 6639b93e81b2
line wrap: on
line diff
--- a/src/core/ngx_times.c
+++ b/src/core/ngx_times.c
@@ -203,18 +203,21 @@ ngx_http_cookie_time(u_char *buf, time_t
 void
 ngx_gmtime(time_t t, ngx_tm_t *tp)
 {
-    ngx_int_t  sec, min, hour, mday, mon, year, wday, yday, days;
+    ngx_uint_t  n, sec, min, hour, mday, mon, year, wday, yday, days;
 
-    days = (ngx_int_t) (t / 86400);
+    /* the calculation is valid for positive time_t only */
+    n = (ngx_uint_t) t;
+
+    days = n / 86400;
 
     /* Jaunary 1, 1970 was Thursday */
     wday = (4 + days) % 7;
 
-    t %= 86400;
-    hour = (ngx_int_t) (t / 3600);
-    t %= 3600;
-    min = (ngx_int_t) (t / 60);
-    sec = (ngx_int_t) (t % 60);
+    n %= 86400;
+    hour = n / 3600;
+    n %= 3600;
+    min = n / 60;
+    sec = n % 60;
 
     /* the algorithm based on Gauss's formula */