[Box Backup-commit] COMMIT r2158 - box/trunk/bin/bbackupquery

boxbackup-dev at fluffy.co.uk boxbackup-dev at fluffy.co.uk
Mon May 5 22:04:34 BST 2008


Author: chris
Date: 2008-05-05 22:04:33 +0100 (Mon, 05 May 2008)
New Revision: 2158

Modified:
   box/trunk/bin/bbackupquery/BackupQueries.cpp
Log:
Catch server errors when listing a directory.


Modified: box/trunk/bin/bbackupquery/BackupQueries.cpp
===================================================================
--- box/trunk/bin/bbackupquery/BackupQueries.cpp	2008-05-05 14:44:38 UTC (rev 2157)
+++ box/trunk/bin/bbackupquery/BackupQueries.cpp	2008-05-05 21:04:33 UTC (rev 2158)
@@ -410,6 +410,7 @@
 		{
 			BOX_ERROR("Directory '" << args[0] << "' not found "
 				"on store.");
+			SetReturnCode(COMMAND_RETURN_ERROR);
 			return;
 		}
 	}
@@ -435,12 +436,29 @@
 	if(!opts[LIST_OPTION_ALLOWDELETED]) excludeFlags |= BackupProtocolClientListDirectory::Flags_Deleted;
 
 	// Do communication
-	mrConnection.QueryListDirectory(
-			DirID,
-			BackupProtocolClientListDirectory::Flags_INCLUDE_EVERYTHING,	// both files and directories
-			excludeFlags,
-			true /* want attributes */);
+	try
+	{
+		mrConnection.QueryListDirectory(
+				DirID,
+				BackupProtocolClientListDirectory::Flags_INCLUDE_EVERYTHING,
+				// both files and directories
+				excludeFlags,
+				true /* want attributes */);
+	}
+	catch (std::exception &e)
+	{
+		BOX_ERROR("Failed to list directory: " << e.what());
+		SetReturnCode(COMMAND_RETURN_ERROR);
+		return;
+	}
+	catch (...)
+	{
+		BOX_ERROR("Failed to list directory: unknown error");
+		SetReturnCode(COMMAND_RETURN_ERROR);
+		return;
+	}
 
+
 	// Retrieve the directory from the stream following
 	BackupStoreDirectory dir;
 	std::auto_ptr<IOStream> dirstream(mrConnection.ReceiveStream());
@@ -755,6 +773,7 @@
 	if(args.size() != 1 || args[0].size() == 0)
 	{
 		BOX_ERROR("Incorrect usage. cd [-o] [-d] <directory>");
+		SetReturnCode(COMMAND_RETURN_ERROR);
 		return;
 	}
 
@@ -772,6 +791,7 @@
 	if(id == 0)
 	{
 		BOX_ERROR("Directory '" << args[0] << "' not found.");
+		SetReturnCode(COMMAND_RETURN_ERROR);
 		return;
 	}
 	




More information about the Boxbackup-commit mailing list