I stumbled upon this while debugging a strange issue with
stream_socket_client() where it randomly throws out errors when
the connection timeout is set to below 1s. The logic to calculate
time difference in php_openssl_subtract_timeval() is wrong when
a.tv_usec < b.tv_usec, causing connection errors before the timeout
is reached.
. Fixed bug #79441 (Segfault in mb_chr() if internal encoding is unsupported).
(Girgias)
+- OpenSSL:
+ . Fixed bug #79497 (stream_socket_client() throws an unknown error sometimes
+ with <1s timeout). (Joe Cai)
+
- Standard:
. Fixed bug #79468 (SIGSEGV when closing stream handle with a stream filter
appended). (dinosaur)
difference.tv_usec = a.tv_usec - b.tv_usec;
if (a.tv_usec < b.tv_usec) {
- b.tv_sec -= 1L;
- b.tv_usec += 1000000L;
+ difference.tv_sec -= 1L;
+ difference.tv_usec += 1000000L;
}
return difference;