On Sun, Jul 19, 2020 at 09:37:31AM -0700, Jeremy wrote:
> From: Jeremy Bobbin <[email protected]>
> 
> stat(3)'s mtime is in local time while REQ_MOD is in GMT.
> This patch translates mtime to GMT before comparing to REQ_MOD.
> ---
>  http.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/http.c b/http.c
> index 249c168..0c707be 100644
> --- a/http.c
> +++ b/http.c
> @@ -531,7 +531,8 @@ http_send_response(int fd, struct request *r)
>               }
>  
>               /* compare with last modification date of the file */
> -             if (difftime(st.st_mtim.tv_sec, mktime(&tm)) <= 0) {
> +             time_t mtime = mktime(gmtime(&st.st_mtim.tv_sec));
> +             if (difftime(mtime, mktime(&tm)) <= 0) {
>                       if (dprintf(fd,
>                                   "HTTP/1.1 %d %s\r\n"
>                                   "Date: %s\r\n"
> -- 
> 2.27.0
> 
> 

It looks incorrect to me, but I have not tested the patch.

Maybe it should be instead:

        if (difftime(st.st_mtim.tv_sec, timegm(&tm)) <= 0) {

Note that strptime also assumes GMT and doesn't for example parse %Z (which is
an extension). That's probably OK generally.

-- 
Kind regards,
Hiltjo

Reply via email to