diff --git a/lib/compat/externalcommandlistener.cpp b/lib/compat/externalcommandlistener.cpp index cc484f1f6..aac24ecc5 100644 --- a/lib/compat/externalcommandlistener.cpp +++ b/lib/compat/externalcommandlistener.cpp @@ -115,13 +115,18 @@ void ExternalCommandListener::CommandPipeThread(const String& commandPath) try { rc = sock->Read(buffer, sizeof(buffer)); } catch (const std::exception& ex) { + /* We have read all data. */ + if (errno == EAGAIN) + continue; + Log(LogWarning, "ExternalCommandListener") - << "Cannot read from socket." << DiagnosticInformation(ex); + << "Cannot read from command pipe." << DiagnosticInformation(ex); break; } - if (rc <= 0) - break; + /* Empty pipe (EOF) */ + if (rc == 0) + continue; fifo->Write(buffer, rc);