Otherwise, in the unlikely case `SSocket()` throws an exception
we might end up with a stale file descriptor in `RemoteLogger::reconnect()`.
(cherry picked from commit
754f300f6b7e64b8de70990950484c4de749d10a)
{
if (d_socket >= 0) {
close(d_socket);
+ d_socket = -1;
}
try {
d_socket = SSocket(d_remote.sin4.sin_family, SOCK_STREAM, 0);
RemoteLogger::~RemoteLogger()
{
d_exiting = true;
- if (d_socket >= 0)
+ if (d_socket >= 0) {
close(d_socket);
+ d_socket = -1;
+ }
d_queueCond.notify_one();
d_thread.join();
}