You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* itunes:block now only emits for "yes"/"Yes" per Apple's spec;
previously any non-empty value (including the example "no" in
dir2cast.ini) was emitted, which blocks the feed from directories.
* Per-MP3-dir dir2cast.ini's mtime now invalidates the cache via a
new LOCAL_INI_FILE constant tracked alongside INI_FILE; editing a
per-podcast ini no longer silently serves stale cached output.
* Caching_getID3_Podcast_Helper::addNamespaceTo now delegates to the
wrapped helper's addNamespaceTo (was calling appendToChannel).
* ?force=... password compare now uses hash_equals() with explicit
string casts: avoids PHP's numeric-string coercion in == ("01" == "1",
"0e1234" == "0e5678") and timing leaks.
* HTTP Last-modified header now uses RFC 7231 IMF-fixdate (" GMT")
instead of RFC 2822 (" +0000"); some intermediaries rejected the
non-conforming form. RSS <lastBuildDate> still uses RFC 2822.
* HTTP Last-modified falls back to the cache file's mtime when the
cached XML lacks an extractable <lastBuildDate>.
Each fix is preceded by a test that fails on the buggy code.
Also fixes the test suite for newer PHPs and expands CI coverage:
* bootstrap.php: handle E_STRICT removal in PHP 8.5.
* bootstrap.php: fake_getopt rewritten to pass user argv as real CLI
args; PHP 8.4+ ignores $GLOBALS['argv'] for getopt().
* .github/workflows/testing.yml: matrix now covers 8.3, 8.4, 8.5;
macos-11 -> macos-latest (older runner retired).
Version bumped to 1.39.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
0 commit comments