[Box Backup-dev] COMMIT r648 - box/chris/general/bin/bbackupd
boxbackup-dev@fluffy.co.uk
boxbackup-dev@fluffy.co.uk
Wed, 19 Jul 2006 00:49:44 +0000 (GMT)
Author: chris
Date: 2006-07-19 00:49:41 +0000 (Wed, 19 Jul 2006)
New Revision: 648
Modified:
box/chris/general/bin/bbackupd/BackupDaemon.cpp
Log:
* BackupDaemon.cpp
- Errors while accepting a connection on the command socket should
kill the reader thread (or at least stop trying for a while)
Modified: box/chris/general/bin/bbackupd/BackupDaemon.cpp
===================================================================
--- box/chris/general/bin/bbackupd/BackupDaemon.cpp 2006-07-19 00:48:13 UTC (rev 647)
+++ box/chris/general/bin/bbackupd/BackupDaemon.cpp 2006-07-19 00:49:41 UTC (rev 648)
@@ -286,16 +286,35 @@
void BackupDaemon::RunHelperThread(void)
{
mpCommandSocketInfo = new CommandSocketInfo;
- // this->mReceivedCommandConn = false;
WinNamedPipeStream& rSocket(mpCommandSocketInfo->mListeningSocket);
// loop until the parent process exits
- while (TRUE)
+ while (!IsTerminateWanted())
{
try
{
rSocket.Accept(BOX_NAMED_PIPE_NAME);
+ }
+ catch (BoxException &e)
+ {
+ ::syslog(LOG_ERR, "Failed to open command socket: %s",
+ e.what());
+ SetTerminateWanted();
+ break; // this is fatal
+ }
+ catch (...)
+ {
+ ::syslog(LOG_ERR, "Failed to open command socket: "
+ "unknown error");
+ SetTerminateWanted();
+ break; // this is fatal
+ }
+ try
+ {
+ // Errors here do not kill the thread,
+ // only the current connection.
+
// This next section comes from Ben's original function
// Log
::syslog(LOG_INFO, "Connection from command socket");
@@ -324,7 +343,7 @@
IOStreamGetLine readLine(rSocket);
std::string command;
- while (rSocket.IsConnected())
+ while (rSocket.IsConnected() && !IsTerminateWanted())
{
HANDLE handles[2];
handles[0] = mhMessageToSendEvent;