[Box Backup-commit] COMMIT r3294 - in box/trunk: lib/backupstore test/backupstore

subversion at boxbackup.org subversion at boxbackup.org
Sun Mar 2 08:58:18 GMT 2014


Author: chris
Date: 2014-03-02 08:58:18 +0000 (Sun, 02 Mar 2014)
New Revision: 3294

Modified:
   box/trunk/lib/backupstore/BackupCommands.cpp
   box/trunk/test/backupstore/testbackupstore.cpp
Log:
Adding a directory when over limit returns an error instead of crashing.

Just like adding a file does.

Modified: box/trunk/lib/backupstore/BackupCommands.cpp
===================================================================
--- box/trunk/lib/backupstore/BackupCommands.cpp	2014-03-02 08:58:02 UTC (rev 3293)
+++ box/trunk/lib/backupstore/BackupCommands.cpp	2014-03-02 08:58:18 UTC (rev 3294)
@@ -508,8 +508,26 @@
 	}
 
 	bool alreadyExists = false;
-	int64_t id = rContext.AddDirectory(mContainingDirectoryID, mDirectoryName, attr, mAttributesModTime, alreadyExists);
-	
+	int64_t id;
+
+	try
+	{
+		id = rContext.AddDirectory(mContainingDirectoryID,
+			mDirectoryName, attr, mAttributesModTime, mModificationTime,
+			alreadyExists);
+	}
+	catch(BackupStoreException &e)
+	{
+		if(e.GetSubType() == BackupStoreException::AddedFileExceedsStorageLimit)
+		{
+			return PROTOCOL_ERROR(Err_StorageLimitExceeded);
+		}
+		else
+		{
+			throw;
+		}
+	}
+
 	if(alreadyExists)
 	{
 		return PROTOCOL_ERROR(Err_DirectoryAlreadyExists);

Modified: box/trunk/test/backupstore/testbackupstore.cpp
===================================================================
--- box/trunk/test/backupstore/testbackupstore.cpp	2014-03-02 08:58:02 UTC (rev 3293)
+++ box/trunk/test/backupstore/testbackupstore.cpp	2014-03-02 08:58:18 UTC (rev 3294)
@@ -2310,13 +2310,13 @@
 		std::auto_ptr<IOStream> upload(BackupStoreFile::EncodeFile("testfiles/test3", BackupProtocolListDirectory::RootDirectory, fnx, &modtime));
 		TEST_THAT(modtime != 0);
 
-		TEST_CHECK_THROWS(std::auto_ptr<BackupProtocolSuccess> stored(protocol.QueryStoreFile(
+		TEST_CHECK_THROWS(protocol.QueryStoreFile(
 				BackupProtocolListDirectory::RootDirectory,
 				modtime,
 				modtime, /* use it for attr hash too */
 				0,							/* diff from ID */
 				fnx,
-				upload)),
+				upload),
 			ConnectionException, Conn_Protocol_UnexpectedReply);
 
 		// This currently causes a fatal error on the server, which
@@ -2323,14 +2323,13 @@
 		// kills the connection. TODO FIXME return an error instead.
 		std::auto_ptr<IOStream> attr(new MemBlockStream(&modtime, sizeof(modtime)));
 		BackupStoreFilenameClear fnxd("exceed-limit-dir");
-		TEST_CHECK_THROWS(std::auto_ptr<BackupProtocolSuccess> dirCreate(
-			protocol.QueryCreateDirectory(
+		TEST_CHECK_THROWS(protocol.QueryCreateDirectory(
 				BackupProtocolListDirectory::RootDirectory,
-				9837429842987984LL, fnxd, attr)),
-			ConnectionException, TLSReadFailed);
+				9837429842987984LL, fnxd, attr),
+			ConnectionException, Conn_Protocol_UnexpectedReply);
 
 		// Finish the connection. TODO FIXME reinstate this.
-		// protocol.QueryFinished();
+		protocol.QueryFinished();
 	}
 
 	tearDown();




More information about the Boxbackup-commit mailing list