Fix strptime decode for musl libc
POSIX does not define a %F for strptime[1], but does define %F for strftime[2]. Afaik most libc's implement %F for both, but musl is very standards-compliant and does not have %F on strptime, leading to unparsed message tag times, which causes all backlog sent from bouncer on startup to have a timestamp of the current time, instead of the actual timestamp sent. [1] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strptime.html [2] https://pubs.opengroup.org/onlinepubs/9699919799/functions/strftime.htmlmaster
parent
fca48fd05d
commit
27b5fd0251
2
handle.c
2
handle.c
|
@ -91,7 +91,7 @@ static const time_t *tagTime(const struct Message *msg) {
|
||||||
static time_t time;
|
static time_t time;
|
||||||
struct tm tm;
|
struct tm tm;
|
||||||
if (!msg->tags[TagTime]) return NULL;
|
if (!msg->tags[TagTime]) return NULL;
|
||||||
if (!strptime(msg->tags[TagTime], "%FT%T", &tm)) return NULL;
|
if (!strptime(msg->tags[TagTime], "%Y-%m-%dT%T", &tm)) return NULL;
|
||||||
time = timegm(&tm);
|
time = timegm(&tm);
|
||||||
return &time;
|
return &time;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue