[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