From b39634d94802f1ad0ec1feb47261a6e01dc987a2 Mon Sep 17 00:00:00 2001 From: Michael Friedrich Date: Mon, 9 May 2016 16:14:48 +0200 Subject: [PATCH] Fix overloaded command pipe errors fixes #11390 --- lib/compat/externalcommandlistener.cpp | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) 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);