<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="/rss.xsl.xml"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/">
<channel>
    <title>Changes in mod_expire.c</title>
    <description></description>
    <language>en</language>
    <copyright>Copyright 2015</copyright>
    <generator>Java</generator><item>
        <title>5e14db43 - [multiple] employ ck_calloc, ck_malloc shared code</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#5e14db43</link>
        <description>[multiple] employ ck_calloc, ck_malloc shared codeemploy ck_calloc(), ck_malloc() shared code to slightly reduce code size(centralize the ck_assert() to check that memory allocation succeeded)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sat, 10 Dec 2022 20:15:33 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>c412bb59 - [multiple] employ ck_realloc_u32() shared code</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#c412bb59</link>
        <description>[multiple] employ ck_realloc_u32() shared codeemploy ck_realloc_u32() shared code to slightly reduce code size

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Thu, 08 Dec 2022 05:26:46 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>b82d7b8a - [multiple] mark mod_*_plugin_init() funcs cold</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#b82d7b8a</link>
        <description>[multiple] mark mod_*_plugin_init() funcs cold

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Tue, 06 Dec 2022 19:21:27 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>33f73b4d - [multiple] application/javascript text/javascript</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#33f73b4d</link>
        <description>[multiple] application/javascript text/javascripttranslate MIME type &quot;application/javascript&quot; to &quot;text/javascript&quot;(if required, type may still be overwritten by mod_setenv or mod_magnet)x-ref:  &quot;Updates to ECMAScript Media Types&quot;  https://www.rfc-editor.org/rfc/rfc9239

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Thu, 26 May 2022 05:32:23 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>d0494fc0 - [multiple] recognize HTTP QUERY method</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#d0494fc0</link>
        <description>[multiple] recognize HTTP QUERY methodx-ref:  https://www.ietf.org/id/draft-ietf-httpbis-safe-method-w-body-02.html

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Thu, 14 Apr 2022 02:48:20 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>9a2404ce - [core] quiet compiler warnings</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#9a2404ce</link>
        <description>[core] quiet compiler warningscast away signedness warning in request_check_hostname()mod_gnutls https_add_ssl_client_entries crts allocated if crt_size != 0  (which is already checked earlier in routine)report from FaceBook Infer static analysis tool (https://fbinfer.com/)- quiet dead store warnings- check return != NULL from allocation funcs

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Tue, 13 Jul 2021 05:21:26 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>309c1693 - [multiple] Y2038 32-bit signed time_t mitigations</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#309c1693</link>
        <description>[multiple] Y2038 32-bit signed time_t mitigationsMost OS platforms have already provided solutions toY2038 32-bit signed time_t 5 - 10 years ago (or more!)Notable exceptions are Linux i686 and FreeBSD i386.Since 32-bit systems tend to be embedded systems,and since many distros take years to pick up new software,this commit aims to provide Y2038 mitigations for lighttpdrunning on 32-bit systems with Y2038-unsafe 32-bit signed time_t* Y2038: lighttpd 1.4.60 and later report Y2038 safety  $ lighttpd -V    + Y2038 support                                    # Y2038-SAFE  $ lighttpd -V    - Y2038 support (unsafe 32-bit signed time_t)      # Y2038-UNSAFE* Y2038: general platform info  * Y2038-SAFE: lighttpd 64-bit builds on platforms using 64-bit time_t      - all major 64-bit platforms (known to this author) use 64-bit time_t  * Y2038-SAFE: lighttpd 32-bit builds on platforms using 64-bit time_t      - Linux x32 ABI (different from i686)      - FreeBSD all 32-bit and 64-bit architectures *except* 32-bit i386      - NetBSD 6.0 (released Oct 2012) all 32-bit and 64-bit architectures      - OpenBSD 5.5 (released May 2014) all 32-bit and 64-bit architectures      - Microsoft Windows XP and Visual Studio 2005 (? unsure ?)        Another reference suggests Visual Studio 2015 defaults to 64-bit time_t      - MacOS 10.15 Catalina (released 2019) drops support for 32-bit apps  * Y2038-SAFE: lighttpd 32-bit builds on platforms using 32-bit unsigned time_t      - e.g. OpenVMS (unknown if lighttpd builds on this platform)  * Y2038-UNSAFE: lighttpd 32-bit builds on platforms using 32-bit signed time_t      - Linux 32-bit (including i686)          - glibc 32-bit library support not yet available for 64-bit time_t              - https://sourceware.org/glibc/wiki/Y2038ProofnessDesign              - Linux kernel 5.6 on 32-bit platforms does support 64-bit time_t                https://itsubuntu.com/linux-kernel-5-6-to-fix-the-year-2038-issue-unix-y2k/              - https://www.gnu.org/software/libc/manual/html_node/64_002dbit-time-symbol-handling.html                &quot;Note: at this point, 64-bit time support in dual-time                 configurations is work-in-progress, so for these                 configurations, the public API only makes the 32-bit time                 support available. In a later change, the public API will                 allow user code to choose the time size for a given                 compilation unit.&quot;              - compiling with -D_TIME_BITS=64 currently has no effect          - glibc recent (Jul 2021) mailing list discussion              - https://public-inbox.org/bug-gnulib/878s2ozq70.fsf@oldenburg.str.redhat.com/T/      - FreeBSD i386      - DragonFlyBSD 32-bit* Y2038 mitigations attempted on Y2038-UNSAFE platforms (32-bit signed time_t)  * lighttpd prefers system monotonic clock instead of realtime clock    in places where realtime clock is not required  * lighttpd treats negative time_t values as after 19 Jan 2038 03:14:07 GMT  * (lighttpd presumes that lighttpd will not encounter dates before 1970    during normal operation.)  * lighttpd casts struct stat st.st_mtime (and st.st_*time) through uint64_t    to convert negative timestamps for comparisions with 64-bit timestamps    (treating negative timestamp values as after 19 Jan 2038 03:14:07 GMT)  * lighttpd provides unix_time64_t (int64_t) and  * lighttpd provides struct unix_timespec64 (unix_timespec64_t)    (struct timespec equivalent using unix_time64_t tv_sec member)  * lighttpd provides gmtime64_r() and localtime64_r() wrappers    for platforms 32-bit platforms using 32-bit time_t and    lighttpd temporarily shifts the year in order to use    gmtime_r() and localtime_r() (or gmtime() and localtime())    from standard libraries, before readjusting year and passing    struct tm to formatting functions such as strftime()  * lighttpd provides TIME64_CAST() macro to cast signed 32-bit time_t to    unsigned 32-bit and then to unix_time64_t* Note: while lighttpd tries handle times past 19 Jan 2038 03:14:07 GMT  on 32-bit platforms using 32-bit signed time_t, underlying libraries and  underlying filesystems might not behave properly after 32-bit signed time_t  overflows (19 Jan 2038 03:14:08 GMT).  If a given 32-bit OS does not work  properly using negative time_t values, then lighttpd likely will not work  properly on that system.* Other references and blogs  - https://en.wikipedia.org/wiki/Year_2038_problem  - https://en.wikipedia.org/wiki/Time_formatting_and_storage_bugs  - http://www.lieberbiber.de/2017/03/14/a-look-at-the-year-20362038-problems-and-time-proofness-in-various-systems/

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Mon, 12 Jul 2021 18:46:49 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>3a568c63 - [core] http_date_time_append() convenience macro</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#3a568c63</link>
        <description>[core] http_date_time_append() convenience macroappend IMF-fixdate time string to (buffer *)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sat, 19 Jun 2021 02:27:04 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>af3df29a - [multiple] reduce redundant NULL buffer checks</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#af3df29a</link>
        <description>[multiple] reduce redundant NULL buffer checksThis commit is a large set of code changes and results in removal ofhundreds, perhaps thousands, of CPU instructions, a portion of whichare on hot code paths.Most (buffer *) used by lighttpd are not NULL, especially since bufferswere inlined into numerous larger structs such as request_st and chunk.In the small number of instances where that is not the case, a NULLcheck is often performed earlier in a function where that buffer islater used with a buffer_* func.  In the handful of cases that remained,a NULL check was added, e.g. with r-&gt;http_host and r-&gt;conf.server_tag.- check for empty strings at config time and set value to NULL if blank  string will be ignored at runtime; at runtime, simple pointer check  for NULL can be used to check for a value that has been set and is not  blank (&quot;&quot;)- use buffer_is_blank() instead of buffer_string_is_empty(),  and use buffer_is_unset() instead of buffer_is_empty(),  where buffer is known not to be NULL so that NULL check can be skipped- use buffer_clen() instead of buffer_string_length() when buffer is  known not to be NULL (to avoid NULL check at runtime)- use buffer_truncate() instead of buffer_string_set_length() to  truncate string, and use buffer_extend() to extendExamples where buffer known not to be NULL:  - cpv-&gt;v.b from config_plugin_values_init is not NULL if T_CONFIG_BOOL    (though we might set it to NULL if buffer_is_blank(cpv-&gt;v.b))  - address of buffer is arg (&amp;foo)    (compiler optimizer detects this in most, but not all, cases)  - buffer is checked for NULL earlier in func  - buffer is accessed in same scope without a NULL check (e.g. b-&gt;ptr)internal behavior change:  callers must not pass a NULL buffer to some funcs.  - buffer_init_buffer() requires non-null args  - buffer_copy_buffer() requires non-null args  - buffer_append_string_buffer() requires non-null args  - buffer_string_space() requires non-null arg

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Wed, 09 Jun 2021 02:57:36 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>1db8da2f - [mod_expire] send only Cache-Control to &gt;=HTTP/1.1</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#1db8da2f</link>
        <description>[mod_expire] send only Cache-Control to &gt;=HTTP/1.1HTTP/1.1 dictates that Cache-Control overrides Expires if both present.Therefore, send only Cache-Control to HTTP/1.1 requests.  This meansthat if an intermediary upgraded the request to HTTP/1.1, and the actualclient sent HTTP/1.0, then the actual client might not understandCache-Control when it may have understood Expires.  RFC 2616 HTTP/1.1was released June 1999, almost 22 years ago (as this comment is written)If a client today is sending HTTP/1.0, chances are the client does notcache.  Avoid the overhead of formatting time for Expires to send bothCache-Control and Expires when the majority of clients are HTTP/1.1 orHTTP/2 (or later).

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Tue, 27 Apr 2021 07:03:39 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>c2feb3e1 - [mod_expire] check for default if mime not found</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#c2feb3e1</link>
        <description>[mod_expire] check for default if mime not foundcheck for default caching if mime-type not found in expire.mimetypes

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Mon, 26 Apr 2021 12:59:34 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>1d478003 - [mod_expire] accept time labels without plural &apos;s&apos;</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#1d478003</link>
        <description>[mod_expire] accept time labels without plural &apos;s&apos;

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sun, 25 Apr 2021 08:52:41 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>a7b95c5b - [mod_expires,mod_webdav] fix truncated date string</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#a7b95c5b</link>
        <description>[mod_expires,mod_webdav] fix truncated date string(bug on master branch)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sat, 24 Apr 2021 08:25:20 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>325d89b9 - [multiple] more reuse of http_date_time_to_str()</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#325d89b9</link>
        <description>[multiple] more reuse of http_date_time_to_str()

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sat, 03 Apr 2021 16:43:46 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>a6d1dcca - [multiple] strftime %F and %T</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#a6d1dcca</link>
        <description>[multiple] strftime %F and %Tstrftime %F for %Y-%m-%d, and %T for %H:%M:%S

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Tue, 23 Mar 2021 15:52:21 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>26f354cb - [multiple] http_header APIs to reduce str copies</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#26f354cb</link>
        <description>[multiple] http_header APIs to reduce str copies

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sun, 21 Mar 2021 08:04:51 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>122094e3 - [multiple] employ http_date.h, sys-time.h</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#122094e3</link>
        <description>[multiple] employ http_date.h, sys-time.h- replace use of strptime() w/ implementation specialized for HTTP dates- use thread-safe gmtime_r(), localtime_r() (replace localtime, gmtime)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sun, 22 Nov 2020 07:41:11 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>fe021118 - [multiple] stat_cache_path_stat() for struct st</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#fe021118</link>
        <description>[multiple] stat_cache_path_stat() for struct ststat_cache_path_stat() for cached (struct st *)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Tue, 13 Oct 2020 17:57:37 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>367f30a6 - [multiple] extend enum http_header_e list</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#367f30a6</link>
        <description>[multiple] extend enum http_header_e list

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Sun, 13 Sep 2020 02:23:16 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
<item>
        <title>c687e01c - [core] r-&gt;uri.path always set, though might be &quot;&quot;</title>
        <link>http://172.16.0.5:8080/history/lighttpd1.4/src/mod_expire.c#c687e01c</link>
        <description>[core] r-&gt;uri.path always set, though might be &quot;&quot;(might be &quot;&quot; if &lt;backend&gt;.server sets &quot;fix-root-scriptname&quot; =&gt; &quot;enable&quot;)

            List of files:
            /lighttpd1.4/src/mod_expire.c</description>
        <pubDate>Fri, 17 Jan 2020 06:03:06 +0000</pubDate>
        <dc:creator>Glenn Strauss &lt;gstrauss@gluelogic.com&gt;</dc:creator>
    </item>
</channel>
</rss>
