storage/plugins/CurlStorage: don't use glibc extension in
ParseTimePoint. %Z is a glibc extension to strptime, and is a no-op there, due to the mapping between timezone names and their definition (especially when the name comes from a different machine) being ambiguous / impossible. Time in HTTP headers is guaranteed to be UTC. Passing an unknown format to strptime() implementations that don't support it will generally cause them to return NULL, which will lead to ParseTimePoint throwing an exception and ParseTimeStamp using an unnecessary fallback. Since the timezone name goes at the end of the string, we don't need to use %Z to skip it (could be an issue in a different time stamp format), so simply removing %Z works best.
This commit is contained in:
parent
00a520a4c3
commit
c95e3dc065
2
NEWS
2
NEWS
@ -1,6 +1,8 @@
|
|||||||
ver 0.22.7 (not yet released)
|
ver 0.22.7 (not yet released)
|
||||||
* decoder
|
* decoder
|
||||||
- ffmpeg: fix build problem with FFmpeg 3.4
|
- ffmpeg: fix build problem with FFmpeg 3.4
|
||||||
|
* storage
|
||||||
|
- curl: don't use glibc extension
|
||||||
|
|
||||||
ver 0.22.6 (2021/02/16)
|
ver 0.22.6 (2021/02/16)
|
||||||
* fix missing tags on songs in queue
|
* fix missing tags on songs in queue
|
||||||
|
@ -193,7 +193,7 @@ ParseTimeStamp(const char *s)
|
|||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
// TODO: make this more robust
|
// TODO: make this more robust
|
||||||
return ParseTimePoint(s, "%a, %d %b %Y %T %Z");
|
return ParseTimePoint(s, "%a, %d %b %Y %T");
|
||||||
} catch (...) {
|
} catch (...) {
|
||||||
return std::chrono::system_clock::time_point::min();
|
return std::chrono::system_clock::time_point::min();
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user