Fix external command pipe: Too many open files

fixes #6916
This commit is contained in:
Michael Friedrich 2014-08-14 16:15:01 +02:00
parent a6335a7cdf
commit 1a3f7d774c
2 changed files with 15 additions and 5 deletions

View File

@ -111,9 +111,7 @@ void ExternalCommandListener::CommandPipeThread(const String& commandPath)
return;
}
Log(LogNotice, "ExternalCommandListener", "Client connected");
Log(LogDebug, "ExternalCommandListener", "Client connected");
Utility::QueueAsyncCallback(boost::bind(&ExternalCommandListener::ClientHandler, this, commandPath, fd));
} catch (std::exception&) {
Log(LogCritical, "ExternalCommandListener", "Cannot accept new connection.");
@ -144,6 +142,19 @@ void ExternalCommandListener::ClientHandler(const String& commandPath, int fd)
String command = line;
if (command.IsEmpty()) {
fclose(fp);
return;
}
/* check if line contains [$unixts] */
if (line[0] != '[' || line[11] != ']') {
Log(LogDebug, "ExternalCommandListener", "Cannot find timestamp prefix in external command '" + command + "'. Bailing out.");
delete line;
fclose(fp);
return;
}
try {
Log(LogInformation, "ExternalCommandListener", "Executing external command: " + command);
@ -152,7 +163,6 @@ void ExternalCommandListener::ClientHandler(const String& commandPath, int fd)
std::ostringstream msgbuf;
msgbuf << "External command failed.";
Log(LogWarning, "ExternalCommandListener", msgbuf.str());
return;
}
delete line;

View File

@ -89,6 +89,6 @@ else
fi
echo "Sending '$ECHO $CMDLINE >> $CMDFILE'"
`$ECHO $CMDLINE >> $CMDFILE`
`$ECHO "$CMDLINE" >> $CMDFILE`
exit 0