[Box Backup-commit] [boxbackup/boxbackup] 733e44: Fix confusion about URIs and paths in S3 filesyste...

GitHub noreply at github.com
Mon Sep 25 21:50:59 BST 2017


  Branch: refs/heads/s3_support_merge
  Home:   https://github.com/boxbackup/boxbackup
  Commit: 733e443d2fad6c2505708b2b4451d0d92b6d617b
      https://github.com/boxbackup/boxbackup/commit/733e443d2fad6c2505708b2b4451d0d92b6d617b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/common/Test.cpp
    M test/s3store/tests3store.cpp

  Log Message:
  -----------
  Fix confusion about URIs and paths in S3 filesystem

* Make it clear (with parameter names and comments) which functions take paths
  (relative to the configured base path), which functions take URIs (complete
  paths) and which functions take URLs (hostname, port and URI).

* Put all objects (files and directories) in the same "directory" tree on S3,
  so that we can list them all together and easily identify the type of each
  object (from its extension). Previously they were separated into "directories"
  (delimited prefixes) called "files" and "dirs" (unlike BackupStore
  filesystems).

* Reinstate hierarchical "directories" on S3, similar to BackupStore
  filesystems, since the reasons for doing this in RaidFile may well apply to S3
  and other compatible stores too. However the objects are still named with
  their complete object ID (unlike RaidFile) and a .file or .dir extension.

(cherry picked from commit 3dd21a3028cacea2ecf6ee3de2f32db3c5138589)


  Commit: 76e44c25c6f7eeb3ea666baf918e9006f51d9bc9
      https://github.com/boxbackup/boxbackup/commit/76e44c25c6f7eeb3ea666baf918e9006f51d9bc9
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Fix quoting of CXXFLAGS and LDFLAGS in Makefiles

Previously, it was impossible to include an @ sign in these flags (for example,
to link to support --with-ssl-headers=/usr/local/opt/openssl at 1.1/include/)
because it was interpreted as a list variable name by Perl. Now the variables
are evaluated single-quoted before being substituted into the Makefile output.


  Commit: 1442c912c357ffa5611c3fad104e4986ea3da012
      https://github.com/boxbackup/boxbackup/commit/1442c912c357ffa5611c3fad104e4986ea3da012
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/crypto/Random.cpp

  Log Message:
  -----------
  Replace RAND_pseudo_bytes with RAND_bytes

RAND_pseudo_bytes is less secure and is now deprecated.


  Commit: 8afc3322548936dda717db7b0d766ebfae572095
      https://github.com/boxbackup/boxbackup/commit/8afc3322548936dda717db7b0d766ebfae572095
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/BackupStoreAccounts.cpp
    M lib/backupstore/BackupStoreAccounts.h

  Log Message:
  -----------
  Move BackupStoreAccountControl code to BackupAccountControl file

(cherry picked from commit 2891416b675cdc346713a26c6e357fba302bbc89)


  Commit: a7db6fca9bee47af5eb9e66a7aad88149dea7c95
      https://github.com/boxbackup/boxbackup/commit/a7db6fca9bee47af5eb9e66a7aad88149dea7c95
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M .travis.yml
    M infrastructure/cmake/CMakeLists.txt
    A infrastructure/m4/ax_boost_base.m4
    M infrastructure/m4/boxbackup_tests.m4

  Log Message:
  -----------
  Add Boost, needed for XML support in S3Simulator and S3Client

Boost will be needed on all platforms for S3 support at least. It's currently
mandatory, but could be made optional if necessary. XML support of some kind is
required both for S3's ListBucket command (which returns XML) and for SimpleDB
support in the S3Simulator, since the SimpleDB API uses XML.

I considered alternative XML libraries to Boost:

* https://stackoverflow.com/questions/170686/what-is-the-best-open-xml-parser-for-c
* https://stackoverflow.com/questions/9387610/what-xml-parser-should-i-use-in-c

The most commonly used one (libxml2) is huge, ugly, slow and hard to use, and
we don't need any of the extra features.  TinyXML would meet our needs, but
Boost is more likely to be available on more platforms, is well respected, and
brings other (unrelated) features that we might want to use in future.

(cherry picked from commit 1a9deec05151281e840b7df5a1244453c0111042)


  Commit: cdfba68b063c3149791129e09ccde5b5542111e3
      https://github.com/boxbackup/boxbackup/commit/cdfba68b063c3149791129e09ccde5b5542111e3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/cdecode.cpp

  Log Message:
  -----------
  Declare Base64 decoding array as signed char

Need to use "signed char" explicitly to work around char being unsigned by
default on ARM, causing compile errors:
https://stackoverflow.com/a/31635045/648162


  Commit: cf7c1115c5e45d305a2b603e15a43acaf75af946
      https://github.com/boxbackup/boxbackup/commit/cf7c1115c5e45d305a2b603e15a43acaf75af946
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/m4/boxbackup_tests.m4

  Log Message:
  -----------
  Make narrowing conversions an error

E.g. on ARM64 with unsigned chars, this is a real error, and causes the build
to fail:
https://buildd.debian.org/status/fetch.php?pkg=boxbackup&arch=arm64&ver=0.11.1~r2837-4&stamp=1485057548&raw=0


  Commit: 4f03228f17d2e5bc6024eca92017694e02780ecc
      https://github.com/boxbackup/boxbackup/commit/4f03228f17d2e5bc6024eca92017694e02780ecc
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/raidfile/RaidFileRead.cpp
    M lib/raidfile/RaidFileRead.h

  Log Message:
  -----------
  Use a named enum type for DirReadType (RaidFileRead::ReadDirectoryContents)

Allows checking for valid values at compile time, and allows the debugger to
show the symbolic constant instead of just its numeric value.


  Commit: ca7c5dde6b84a8c07401def77ba96962a6e7d337
      https://github.com/boxbackup/boxbackup/commit/ca7c5dde6b84a8c07401def77ba96962a6e7d337
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Client.h

  Log Message:
  -----------
  Add comments to explain the three S3Client constructors


  Commit: 1fce16a59a979e9cbb4c0643b32c06b78cae780c
      https://github.com/boxbackup/boxbackup/commit/1fce16a59a979e9cbb4c0643b32c06b78cae780c
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M lib/common/BoxPlatform.h
    M lib/intercept/intercept.h
    M test/raidfile/testraidfile.cpp

  Log Message:
  -----------
  Enable and fix raidfile intercepts on Mac OSX


  Commit: 3cd6d9a25d2a5c240fcaf3f4655ccc54b3ce003a
      https://github.com/boxbackup/boxbackup/commit/3cd6d9a25d2a5c240fcaf3f4655ccc54b3ce003a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/m4/ax_check_dirent_d_type.m4

  Log Message:
  -----------
  Fix check for a working struct dirent.d_type

Which I broke in 2007 and never noticed was broken until now. Oops!


  Commit: 0a8430d67ea47ea180a36ca70ad2fbc2f1dfdbac
      https://github.com/boxbackup/boxbackup/commit/0a8430d67ea47ea180a36ca70ad2fbc2f1dfdbac
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/buildenv-testmain-template.cpp

  Log Message:
  -----------
  Fix exit status from tests: could previously return 0 even after failures


  Commit: aeece4fcc97ab0ad56edc224dd4ee8bf4e1b7abf
      https://github.com/boxbackup/boxbackup/commit/aeece4fcc97ab0ad56edc224dd4ee8bf4e1b7abf
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/bbackupd/testbbackupd.cpp

  Log Message:
  -----------
  Allow 1 extra second in test_store_error_reporting

Hopefully this will solve the random test failures on Travis.


  Commit: 7f9685c94b7e7ce11d674eb4154989d62d624d01
      https://github.com/boxbackup/boxbackup/commit/7f9685c94b7e7ce11d674eb4154989d62d624d01
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.h

  Log Message:
  -----------
  Fix delete of incomplete type in BackupAccountControl.h

This has been flagged up by MSVC for some time. I've been unable to make GCC or
Clang do so.


  Commit: 490ad643a78f572379476efb8b613e77db7db94b
      https://github.com/boxbackup/boxbackup/commit/490ad643a78f572379476efb8b613e77db7db94b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Test.cpp

  Log Message:
  -----------
  Log time taken by each test case in a test suite.

Should help diagnose why test/backupstore sometimes takes >500 seconds on
Travis, when it normally takes ~120 seconds.


  Commit: 64ff56f172a74fc5b6e4830d7cd0a376f95803e4
      https://github.com/boxbackup/boxbackup/commit/64ff56f172a74fc5b6e4830d7cd0a376f95803e4
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt

  Log Message:
  -----------
  Add support for RelWithDebInfo builds using CMake

Debugging release tests is pretty difficult without debug info. This
release-compatible build makes it easier.


  Commit: 09f6d2afc1591859195abfb29ac7751ccd564f38
      https://github.com/boxbackup/boxbackup/commit/09f6d2afc1591859195abfb29ac7751ccd564f38
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt

  Log Message:
  -----------
  CMake: make readline support configurable, not automatic

Otherwise if it's detected on the system (e.g. if you install GnuWin)
then it would always be enabled, but linking against GnuWin headers
breaks the build.


  Commit: 90abd7163f52f9272bbbb4a806af22accd2a44f5
      https://github.com/boxbackup/boxbackup/commit/90abd7163f52f9272bbbb4a806af22accd2a44f5
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupclient/BackupClientRestore.cpp
    M lib/backupstore/BackupClientFileAttributes.cpp
    M lib/backupstore/BackupStoreFile.cpp
    M lib/backupstore/BackupStoreRefCountDatabase.cpp
    M lib/bbackupd/BackupDaemon.cpp
    M lib/bbackupquery/BackupQueries.cpp
    M lib/common/InvisibleTempFileStream.cpp
    M lib/common/NamedLock.cpp
    M lib/common/Test.cpp
    M lib/raidfile/RaidFileWrite.cpp
    M lib/server/Daemon.cpp
    M lib/server/ServerControl.cpp
    M lib/server/ServerStream.h
    M lib/win32/emu.h
    M test/backupstore/testbackupstore.cpp
    M test/backupstorefix/testbackupstorefix.cpp
    M test/backupstorepatch/testbackupstorepatch.cpp
    M test/basicserver/testbasicserver.cpp
    M test/bbackupd/testbbackupd.cpp
    M test/httpserver/testhttpserver.cpp
    M test/raidfile/testraidfile.cpp

  Log Message:
  -----------
  Remove link and unlink macros on Windows.

They provided source-code compatibility with the POSIX versions of these
functions, but they conflict with Boost. Replace with EMU_LINK and
EMU_UNLINK everywhere.


  Commit: 32de0463a36f57a526701775784904a4e30164a8
      https://github.com/boxbackup/boxbackup/commit/32de0463a36f57a526701775784904a4e30164a8
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/WaitForEvent.cpp
    M lib/common/WaitForEvent.h
    M lib/server/SocketListen.h
    M lib/server/SocketStream.cpp
    M lib/win32/emu.cpp
    M lib/win32/emu.h
    M lib/win32/emu_winver.h

  Log Message:
  -----------
  Win32 build: upgrade to _WIN32_WINNT 0x600 (WinXP and above)

This should enable us to use Windows dbghelp functions to get stack
traces on exceptions, including demangled names.

This required replacing our custom "struct pollfd" with
EMU_STRUCT_POLLFD everywhere, to fix the conflict with newer versions of
winsock2.h.


  Commit: 0b6e71dabcaaeed0394c1b8ae38f03d48db2f34a
      https://github.com/boxbackup/boxbackup/commit/0b6e71dabcaaeed0394c1b8ae38f03d48db2f34a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbackupquery/bbackupquery.cpp
    M infrastructure/buildenv-testmain-template.cpp
    A lib/common/MainHelper.cpp
    M lib/common/MainHelper.h
    M lib/server/Daemon.cpp

  Log Message:
  -----------
  Refactor winsock initialisation on Windows

Automatically initialise winsock in all binaries. Should fix issues with
bbstoreaccounts not working on Windows.


  Commit: 131f38b031cff5af55796f6eb9007174de994ec0
      https://github.com/boxbackup/boxbackup/commit/131f38b031cff5af55796f6eb9007174de994ec0
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/DebugMemLeakFinder.cpp

  Log Message:
  -----------
  Fix compile warnings about printf format strings in DebugMemLeakFinder


  Commit: 659e38955d852fe9f3db245ba3df10ad7d5a6d25
      https://github.com/boxbackup/boxbackup/commit/659e38955d852fe9f3db245ba3df10ad7d5a6d25
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Reduce precision of common timer test

Ideally timers would be perfectly accurate and we could sleep for 1.0 seconds,
but on OSX in particular they could fire 50-100 ms late (I've seen 4 ms in
practice) and we don't want the tests to fail because of this, because we don't
really need that kind of precision in practice. So we reduce the timer
intervals by 100ms to be safe.

(cherry picked from commit 8d02eebce553ed822e0fcd60d6e319384e15ba4b)


  Commit: 90a5d65796d14926df4ea1b8cf3b5f7e9884116a
      https://github.com/boxbackup/boxbackup/commit/90a5d65796d14926df4ea1b8cf3b5f7e9884116a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Logging.h
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Increase logging level and add timestamps in testcommon

Should help to debug frequent test failures such as Condition
[t2.HasExpired()] on OSX hosts on Travis.

(cherry picked from commit 61a8e7514e01bc05ea3ea77d110c16bff37a50f4)


  Commit: 8bf00509f11b7eef0ec18fcd10cadc30ce3730d3
      https://github.com/boxbackup/boxbackup/commit/8bf00509f11b7eef0ec18fcd10cadc30ce3730d3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M .gitattributes

  Log Message:
  -----------
  Stop Git from normalising line endings

Although recommended, "text" mode causes constant and unfixable conficts
that I give up fighting with.

(cherry picked from commit 25e445a6848a870aabd89a3b8a013265aa3cf17b)


  Commit: 1ac9ea845fa41d45a8125d19be10294730eb6551
      https://github.com/boxbackup/boxbackup/commit/1ac9ea845fa41d45a8125d19be10294730eb6551
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M appveyor.yml
    M infrastructure/cmake/CMakeLists.txt
    M infrastructure/cmake/getversion.pl

  Log Message:
  -----------
  Build Win32/64 binary packages automatically

Every AppVeyor build on the specified branches that passes will be packaged
into a ZIP file and installer using CPack and uploaded to GitHub Releases.

Generate version number entirely in AppVeyor config, and build it into the
binary, and use it in the names of the created binary packages, and compile it
into the binaries.


  Commit: 0e35730ad95b802e1b09ead95a1f9f52e89c2350
      https://github.com/boxbackup/boxbackup/commit/0e35730ad95b802e1b09ead95a1f9f52e89c2350
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbackupquery/bbackupquery.cpp
    M infrastructure/BoxPlatform.pm.in
    M lib/bbackupd/BackupDaemon.cpp
    M lib/bbstored/BackupStoreDaemon.cpp
    M lib/common/BannerText.h

  Log Message:
  -----------
  Update banner text, and shorten compiled-in Git version numbers

Shorten compiled-in version numbers based on Git revisions.  Git revisions are
often quoted as 7 hexadecimal digits, so let's do that here too.

Add sanity to banner texts of command-line utilities.

(cherry picked from commit 9afc3ca99d9cddd6f9a01fd5c0baa63ee16a449a)
(cherry picked from commit c10913a35c155fb1efbc2c32ba0db45c580c4fad)
(cherry picked from commit 0ce96b4c356b9f94b46e0c2842fdc81704c77f76)


  Commit: 22724802b4e35b444b2d2482f1c251b4acfd85f9
      https://github.com/boxbackup/boxbackup/commit/22724802b4e35b444b2d2482f1c251b4acfd85f9
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbstoreaccounts/bbstoreaccounts.cpp

  Log Message:
  -----------
  bbstoreaccounts: add support for standard command-line logging options

Tidy up usage text, and fix erroneous memory leak reported after calling
PrintUsageAndExit().

(cherry picked from commit 1a209b5c3c9cdd0ed3a92d2c884706a580b13844)


  Commit: 19b2f5983714bd28c4bc235a8371aab404cc224e
      https://github.com/boxbackup/boxbackup/commit/19b2f5983714bd28c4bc235a8371aab404cc224e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt

  Log Message:
  -----------
  Make generated files depend on their generators under CMake

If makeprotocol.pl.in or makeexception.pl changes, then we should rebuild
the source files that are built by them (and therefore anything that depends
on those source files, etc).

(cherry picked from commit f9818932b31120f139500cc524563fe8483b072d)
(cherry picked from commit 53d1a6c05ed4c39cb2eef34efb52a544ec4e02a1)


  Commit: f1a29fcae73cf0e83340217727c66413d898da1b
      https://github.com/boxbackup/boxbackup/commit/f1a29fcae73cf0e83340217727c66413d898da1b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/bbackupd/testbbackupd.cpp

  Log Message:
  -----------
  Whitespace fixes


  Commit: 05e060566070ba73a854f9cbafee7d509c597d92
      https://github.com/boxbackup/boxbackup/commit/05e060566070ba73a854f9cbafee7d509c597d92
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M appveyor.yml

  Log Message:
  -----------
  Remove Xamarin to remove 500 lines of junk from build logs

See
http://help.appveyor.com/discussions/problems/4569-the-target-_convertpdbfiles-listed-in-a-beforetargets-attribute-at-c-does-not-exist-in-the-project-and-will-be-ignored for details.


  Commit: 273b38fca7f2a500c9ed9508117904f22ad473b3
      https://github.com/boxbackup/boxbackup/commit/273b38fca7f2a500c9ed9508117904f22ad473b3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M appveyor.yml

  Log Message:
  -----------
  Reorder lines in appveyor.yml to match actual execution order


  Commit: d0a3a56152f9cd7370e454ff8a1c6dac915b1be5
      https://github.com/boxbackup/boxbackup/commit/d0a3a56152f9cd7370e454ff8a1c6dac915b1be5
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M appveyor.yml
    M infrastructure/cmake/windows/CMakeLists.txt

  Log Message:
  -----------
  Reduce AppVeyor build verbosity by passing extra args to sub-CMake


  Commit: e88c365f65aa087e2a5b2e9a0c4346fdb0c79db4
      https://github.com/boxbackup/boxbackup/commit/e88c365f65aa087e2a5b2e9a0c4346fdb0c79db4
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M appveyor.yml

  Log Message:
  -----------
  Disable DEBUG to reduce CMake build verbosity on AppVeyor


  Commit: d12b15d119d54bd91cd23dcfffec9c0af2ad955c
      https://github.com/boxbackup/boxbackup/commit/d12b15d119d54bd91cd23dcfffec9c0af2ad955c
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/backupstorefix/testbackupstorefix.cpp

  Log Message:
  -----------
  Lock store while corrupting it in test/backupstorefix

Should hopefully reduce risk of random test failures/race conditions.

(cherry picked from commit 0f31359ca8ebbd6ddfd5f2d042c8c23af4d67997)


  Commit: 9da58d5f7582e819261b04a3f085bcc3361c0c6a
      https://github.com/boxbackup/boxbackup/commit/9da58d5f7582e819261b04a3f085bcc3361c0c6a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt

  Log Message:
  -----------
  Improve error messages when PCRE detection fails (or is abused)

(cherry picked from commit 81528092fd51b6f81a21899bc205c369597c481d)


  Commit: f4bf9ec324c88ff7eb4dac6d43492250fdca1f15
      https://github.com/boxbackup/boxbackup/commit/f4bf9ec324c88ff7eb4dac6d43492250fdca1f15
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M lib/common/Box.h
    M lib/common/MainHelper.cpp
    M lib/common/MainHelper.h
    M lib/common/Utils.cpp

  Log Message:
  -----------
  Win32: add experimental stack backtraces with symbol lookup

(cherry picked from commit f4685e72c2c7e274533c1cb149180809631a1da7)


  Commit: 2a38d4119677b5ded50748d074536a27b2b708d3
      https://github.com/boxbackup/boxbackup/commit/2a38d4119677b5ded50748d074536a27b2b708d3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Logging.cpp
    M lib/common/Logging.h

  Log Message:
  -----------
  Modify command-line -L option to override log level for a specific file

This allows enabling TRACE logging for a specific file (e.g. to enable
exception backtraces for that file) without enabling TRACE globally.

Replace HideFileGuard with LogLevelOverrideByFileGuard.

(cherry picked from commit 29f74be06351b6ce9a872765db63171ad902b596)


  Commit: f7cff37cfe4b8dd1f1a3c4802c0e6e8d20be823f
      https://github.com/boxbackup/boxbackup/commit/f7cff37cfe4b8dd1f1a3c4802c0e6e8d20be823f
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Box.h
    M lib/common/Logging.cpp
    M lib/common/Logging.h
    M lib/common/Utils.cpp
    M lib/common/Utils.h
    M lib/server/SocketStream.cpp

  Log Message:
  -----------
  Use filename where exception was thrown in DumpStackBacktrace

Allows us to turn on exceptions for specific files, rather that
filtering them all as Utils.cpp.

(cherry picked from commit 3590e9745dac2f25267bd755ed3d554423395330)


  Commit: aa16578a3877af0ec29317cb66564b172aa88119
      https://github.com/boxbackup/boxbackup/commit/aa16578a3877af0ec29317cb66564b172aa88119
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M runtest.pl.in

  Log Message:
  -----------
  Enable backtraces and timestamps in all tests when building with CMake

(cherry picked from commit 166e39c11d242ebed6b62fc3f126af48345a22ca)


  Commit: cef28cfca1bcbe20410cbfb7a5b11356d3c2f3e4
      https://github.com/boxbackup/boxbackup/commit/cef28cfca1bcbe20410cbfb7a5b11356d3c2f3e4
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Use the correct preprocessor define for release builds

(cherry picked from commit 085149bf1c2c287ee744f2e094a99a77fc89dc60)


  Commit: a56aaa3cd840ae0e18b991744a06c3ea229cb1a8
      https://github.com/boxbackup/boxbackup/commit/a56aaa3cd840ae0e18b991744a06c3ea229cb1a8
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/server/SocketStream.cpp

  Log Message:
  -----------
  Show IP address as well as hostname for ServerException::SocketOpenError

(cherry picked from commit 1a51adcd6be000f09fa280e42fb12e5631cd69b9)


  Commit: 62eb5cfdbb60e585e041fb8fbf8c8ce5f64a25ba
      https://github.com/boxbackup/boxbackup/commit/62eb5cfdbb60e585e041fb8fbf8c8ce5f64a25ba
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/backupstorefix/testbackupstorefix.cpp

  Log Message:
  -----------
  test/backupstorefix: tag bbstoreaccounts check output in tests

(cherry picked from commit c31d7143273f2d5257ec690e894442a8398aaf21)


  Commit: 166d1ec6e711176e32cbf01beb00d1425e03da45
      https://github.com/boxbackup/boxbackup/commit/166d1ec6e711176e32cbf01beb00d1425e03da45
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M infrastructure/m4/boxbackup_tests.m4

  Log Message:
  -----------
  Add support for M4 CXX flag detection in CMakeLists

Enables all flags that are detected by M4 builds to be detected by CMake builds
as well (except for -Wall which enables a bunch of junk).

(cherry picked from commit 2ea8a9706d79a386729c7b2d814089e90bac6926)


  Commit: 336859cb7f499300d4b6e0b6bcd18e275a1f0043
      https://github.com/boxbackup/boxbackup/commit/336859cb7f499300d4b6e0b6bcd18e275a1f0043
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/DebugMemLeakFinder.cpp
    M lib/common/Utils.cpp

  Log Message:
  -----------
  Store and log full stack traces for leaked memory allocations

Don't dump stack backtrace when logging memory leaks to a file

Since the backtrace goes to the console instead, it's confusing to have them in
different places.

(cherry picked from commit 6e7df4dfdc06eaff2dd0ef51741df3cf6ba319ea)
(cherry picked from commit 270cd1f16fa8a32b07ae0b9762a417db7b95b82f)
(cherry picked from commit c627e9547fb8a191ea36780b140fd0516a0bffa8)


  Commit: 1cdca12e0025c4551c2cc8a33dcb89a7bc6dc212
      https://github.com/boxbackup/boxbackup/commit/1cdca12e0025c4551c2cc8a33dcb89a7bc6dc212
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/buildenv-testmain-template.cpp
    M lib/backupstore/StoreTestUtils.cpp
    M lib/backupstore/StoreTestUtils.h
    M lib/common/Test.h
    M test/backupstorefix/testbackupstorefix.cpp
    M test/bbackupd/testbbackupd.cpp

  Log Message:
  -----------
  Increase default verbosity in some timing tests


  Commit: 38ba7510f2cad9accf445d5633c64e98a637a139
      https://github.com/boxbackup/boxbackup/commit/38ba7510f2cad9accf445d5633c64e98a637a139
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/m4/boxbackup_tests.m4
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Detect which debugger to use in t-gdb scripts: lldb or gdb

Should make debugging on Mac and BSD less painful.

Make t-gdb fail with an error when no debugger was detected.

(cherry picked from commit da98a8183737fb1fcb658cebd9612791a4750c4c)
(cherry picked from commit ea6bc722131222d1fad08521e61f552f16941b01)


  Commit: 03ba60897794d92b5710808ad694146931da6fb1
      https://github.com/boxbackup/boxbackup/commit/03ba60897794d92b5710808ad694146931da6fb1
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Don't add CXXFLAGS to CFLAGS

Some CXXFLAGS such as enabling C++11 don't make sense for CC and will be
rejected, causing the compile to fail. We don't really test for flags being
compatible with the C compiler anyway, and we don't have enough C files to
care that much.

(cherry picked from commit 2ad9ee9012d4a7354c33ff0272c0768b952a9064)


  Commit: a566e6a5dcc56bbaa8bc3ba7e60b7fcd89928918
      https://github.com/boxbackup/boxbackup/commit/a566e6a5dcc56bbaa8bc3ba7e60b7fcd89928918
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Perl buildsystem: add test prepare targets

Similar to the CMake prepare targets, these are useful when intending to
debug tests or run a server using a standard test configuration, which
requires the testfiles directory to be copied into the binary output tree.

(cherry picked from commit 2afecdd57a3bcf42c116c8535843039a1596feac)


  Commit: e3bb358cb1ff41ec546db929023f5830db77366e
      https://github.com/boxbackup/boxbackup/commit/e3bb358cb1ff41ec546db929023f5830db77366e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbstoreaccounts/bbstoreaccounts.cpp
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/StoreTestUtils.cpp

  Log Message:
  -----------
  Rename BackupStoreAccountsControl to BackupStoreAccountControl

For consistency with the base class, BackupAccountControl, and grammatical
reasons.


  Commit: 54f07522aa8837cd5673aebe91da7a01fcc1c5d0
      https://github.com/boxbackup/boxbackup/commit/54f07522aa8837cd5673aebe91da7a01fcc1c5d0
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Add missing implementations of RaidBackupFileSystem methods

These should have been added whenever BackupFileSystem.h was added, which was
4db4deed3448b9c2b9e885a20cb1a777632464d6, although it didn't really belong in
that commit either. But it's too late to change history now. Adding the missing
method definitions makes it possible to instantiate a RaidBackupFileSystem.


  Commit: c2572e705c38dbb552c0d69e7851b2c300650cdc
      https://github.com/boxbackup/boxbackup/commit/c2572e705c38dbb552c0d69e7851b2c300650cdc
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbstoreaccounts/bbstoreaccounts.cpp
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/StoreTestUtils.cpp

  Log Message:
  -----------
  Refactor BackupStoreAccountControl to be for a specific account ID

This allows other BackupAccountControl implementations to implement the same
interface without needing to support account IDs, which are very
store-specific.


  Commit: 28b977048b86d38edbbc14b3887d9e787da0046b
      https://github.com/boxbackup/boxbackup/commit/28b977048b86d38edbbc14b3887d9e787da0046b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Remove debugging code to list files during test_multiple_uploads

Revert "Try listing files to help debug random failures of test_multiple_uploads()."

This reverts commit e302ded5b7d40fe88d65808564f4db9df2a6f878.


  Commit: 21494566d89044da6ac986ac2062ac380e96f1df
      https://github.com/boxbackup/boxbackup/commit/21494566d89044da6ac986ac2062ac380e96f1df
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbstoreaccounts/bbstoreaccounts.cpp
    M infrastructure/m4/boxbackup_tests.m4
    M infrastructure/makebuildenv.pl.in
    M infrastructure/travis-build.sh
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupConstants.h
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupProtocol.txt
    M lib/backupstore/BackupStoreAccounts.h
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/backupstore/BackupStoreCheck2.cpp
    M lib/backupstore/BackupStoreContext.cpp
    M lib/backupstore/BackupStoreContext.h
    M lib/backupstore/BackupStoreException.txt
    M lib/backupstore/BackupStoreFile.cpp
    M lib/backupstore/BackupStoreRefCountDatabase.cpp
    M lib/backupstore/HousekeepStoreAccount.cpp
    M lib/backupstore/StoreTestUtils.cpp
    M lib/backupstore/StoreTestUtils.h
    M lib/bbstored/BackupStoreDaemon.cpp
    M lib/common/CollectInBufferStream.cpp
    M lib/common/CommonException.txt
    M lib/common/NamedLock.cpp
    M lib/httpserver/S3Simulator.cpp
    M runtest.pl.in
    M test/backupstore/testbackupstore.cpp
    M test/backupstorefix/testbackupstorefix.cpp
    M test/backupstorepatch/testbackupstorepatch.cpp
    M test/bbackupd/testbbackupd.cpp
    M test/common/testcommon.cpp
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Whitespace and comment cleanup


  Commit: de0206641da75d588855474b8a756fb4cada7a00
      https://github.com/boxbackup/boxbackup/commit/de0206641da75d588855474b8a756fb4cada7a00
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Custom build system: fix autogen dependencies

Remove useless inclusion of Makefile.extras with paths in subdirs that will
never match anything, and replace those inclusions with recursive Make calls to
build those targets. This allows changes to exception and protocol files to be
detected automatically, and the C++ code regenerated.


  Commit: 8f6076a3bebc419224184695ba41e67fda2e7db5
      https://github.com/boxbackup/boxbackup/commit/8f6076a3bebc419224184695ba41e67fda2e7db5
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupclient/BackupClientRestore.cpp
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/common/Test.cpp
    M lib/common/Utils.cpp
    M lib/common/Utils.h
    M lib/httpserver/S3Simulator.cpp

  Log Message:
  -----------
  Make ObjectExists and BackupStoreCheck use object_exists_t enum


  Commit: 858f7c2e7b67d4ee650909ef0dc248bc8b1a4cb7
      https://github.com/boxbackup/boxbackup/commit/858f7c2e7b67d4ee650909ef0dc248bc8b1a4cb7
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Utils.cpp
    M lib/common/Utils.h

  Log Message:
  -----------
  Add GetTempDirPath() for portability

On Unix, check TEMP, TMP and TMPDIR, and if no env var is set, fall back to
/tmp.  For some reason it's becoming increasingly common for Unixes not to set
TMP* to anything.


  Commit: 42e2b70340a79078369ee26f5b0a43baad7716b2
      https://github.com/boxbackup/boxbackup/commit/42e2b70340a79078369ee26f5b0a43baad7716b2
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Fix include ordering in testcommon.cpp


  Commit: 79b46b17d66498b5f30e1272948b078558bd0055
      https://github.com/boxbackup/boxbackup/commit/79b46b17d66498b5f30e1272948b078558bd0055
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Refactor testcommon to split into independent tests

Remove redundant NamedLock tests.


  Commit: 16a037524df72cc7a173ce8d50080c20e0622281
      https://github.com/boxbackup/boxbackup/commit/16a037524df72cc7a173ce8d50080c20e0622281
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Utils.cpp
    M lib/common/Utils.h
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Add force parameter to RemovePrefix and RemoveSuffix


  Commit: 2623d879ef2dd594da522f392cc7c618be8c4564
      https://github.com/boxbackup/boxbackup/commit/2623d879ef2dd594da522f392cc7c618be8c4564
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupCommands.cpp
    M lib/backupstore/BackupStoreContext.cpp
    M lib/backupstore/BackupStoreContext.h

  Log Message:
  -----------
  Remove BackupStoreContext::ReceivedFinishCommand

Replace with CleanUp(). We don't need two methods that do almost the same
thing.


  Commit: 79d89af10a6c54101571730f0e23e522e4d3c85b
      https://github.com/boxbackup/boxbackup/commit/79d89af10a6c54101571730f0e23e522e4d3c85b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupProtocol.h
    M lib/backupstore/BackupStoreContext.cpp
    M lib/backupstore/BackupStoreContext.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Refactor BackupStoreContext::GetBackupStoreInfo

Almost all access to mapStoreInfo is now via GetBackupStoreInfo(Internal), in
preparation for the refactor that will move the main copy of the
BackupStoreInfo to the BackupFileSystem instance instead.


  Commit: 07ed9cc557c600b21743cd0ca80bf707c0571cab
      https://github.com/boxbackup/boxbackup/commit/07ed9cc557c600b21743cd0ca80bf707c0571cab
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M infrastructure/m4/boxbackup_tests.m4
    M lib/backupstore/BackupStoreContext.cpp

  Log Message:
  -----------
  Enable C++0x support

We need C++0x features enabled for "auto" to work, and using Boost properly
seems to require this. Use "auto" in a few places to prove that it works.


  Commit: 881f02657014f9cc251d592f3f6ecc077aadd198
      https://github.com/boxbackup/boxbackup/commit/881f02657014f9cc251d592f3f6ecc077aadd198
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Refactor to create BackupFileSystem::GetBackupStoreInfo

Extract common code from filesystem-specific implementations, and rename them
to GetBackupStoreInfoInternal().


  Commit: e1b82802336870b0dd63e2ca6ec4c8cc322aff7d
      https://github.com/boxbackup/boxbackup/commit/e1b82802336870b0dd63e2ca6ec4c8cc322aff7d
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Refactor BackupFileSystem::GetLock()

Call subclass implementations of TryGetLock(), and throw an exception if we
fail to get a lock instead of returning false.


  Commit: 1d5d5e417c66fb67785a7cdef38550cfe2a5f6b7
      https://github.com/boxbackup/boxbackup/commit/1d5d5e417c66fb67785a7cdef38550cfe2a5f6b7
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Test.cpp
    M lib/common/Utils.cpp
    M lib/common/Utils.h

  Log Message:
  -----------
  Refactor test code into process_is_running()

We need the ability to check whether a process is still running to check for
stale S3 account locks in SimpleDB, so move this code out of Test.cpp and into
Utils.cpp, for use outside of tests.


  Commit: b562039f1b048590d6fb924c926149357a58c2b6
      https://github.com/boxbackup/boxbackup/commit/b562039f1b048590d6fb924c926149357a58c2b6
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Test.cpp
    M lib/common/Test.h
    M lib/common/Utils.cpp
    M lib/common/Utils.h

  Log Message:
  -----------
  Implement compare_lists and test_equal_maps in lib/common/Test.cpp


  Commit: 3b15f85a054a2edbd14cc577cb46be2bfd07f9d4
      https://github.com/boxbackup/boxbackup/commit/3b15f85a054a2edbd14cc577cb46be2bfd07f9d4
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/HTTPQueryDecoder.cpp
    M lib/httpserver/HTTPQueryDecoder.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add static method HTTPQueryDecoder::URLEncode

This will be needed for request parameter encoding and for SimpleDB.


  Commit: 8f5120b18b4d91e4831c85df782a6e52d5210c3d
      https://github.com/boxbackup/boxbackup/commit/8f5120b18b4d91e4831c85df782a6e52d5210c3d
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/HTTPRequest.cpp
    M lib/httpserver/HTTPRequest.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add query parameter editing and encoding to HTTPRequest


  Commit: 3b67f039382683ea568bb391ab4cdb5399fa485b
      https://github.com/boxbackup/boxbackup/commit/3b67f039382683ea568bb391ab4cdb5399fa485b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Client.cpp
    M lib/httpserver/S3Client.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add support for virtualhost names in S3Client

This is a precondition of support for both S3 and SimpleDB in the S3Simulator,
since otherwise we can't tell the requests apart.


  Commit: 9926b622d74eecf000e6e6be1ee25703f768ff81
      https://github.com/boxbackup/boxbackup/commit/9926b622d74eecf000e6e6be1ee25703f768ff81
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Test.cpp
    M lib/httpserver/HTTPException.txt
    M lib/httpserver/S3Simulator.cpp
    M lib/httpserver/S3Simulator.h
    A lib/httpserver/SimpleDBClient.cpp
    A lib/httpserver/SimpleDBClient.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add simulator and client for SimpleDB

This will be used to support reliable instant locking of S3 accounts.


  Commit: 80540ca33ab05fb1bdf65f56e09b0593c765ef1a
      https://github.com/boxbackup/boxbackup/commit/80540ca33ab05fb1bdf65f56e09b0593c765ef1a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Simulator.cpp
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add support for S3-compatible ETag headers to S3Simulator


  Commit: 23bdbc6d62a26e27bd6c19c6cee0d012a2f4ce89
      https://github.com/boxbackup/boxbackup/commit/23bdbc6d62a26e27bd6c19c6cee0d012a2f4ce89
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Client.cpp
    M lib/httpserver/S3Client.h
    M lib/httpserver/S3Simulator.cpp
    M lib/httpserver/S3Simulator.h
    M modules.txt
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add support for If-None-Match header to S3Client and S3Simulator

This allows the client to only download a file if it doesn't match the one in
the local cache, which makes it possible to use the cache very efficiently.


  Commit: 662e7cb8b53508d51692844c3b2939dfe0dde237
      https://github.com/boxbackup/boxbackup/commit/662e7cb8b53508d51692844c3b2939dfe0dde237
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/bbackupd/testbbackupd.cpp

  Log Message:
  -----------
  Rename setup_test_bbackupd() in test/bbackupd

The name of this utility function was confusing with the SETUP_TEST_BBACKUPD
macro which served an entirely different purpose, so I renamed it to
prepare_test_with_client_daemon().


  Commit: 1a86a0ec4253a517f8053e5881ecb3904483c5d0
      https://github.com/boxbackup/boxbackup/commit/1a86a0ec4253a517f8053e5881ecb3904483c5d0
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/BackupCommands.cpp
    M lib/backupstore/BackupStoreContext.cpp
    M lib/backupstore/BackupStoreContext.h

  Log Message:
  -----------
  Make GetBlockSize() use BackupFileSystem

Refactor BackupAccountControl, BackupStoreContext and BackupCommands to call
BackupFileSystem to get the block size of the filesystem. It's a start.


  Commit: 9dea0edff38efe327dc5305cacfcfc5ea4508d76
      https://github.com/boxbackup/boxbackup/commit/9dea0edff38efe327dc5305cacfcfc5ea4508d76
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/StoreTestUtils.h
    M lib/server/makeprotocol.pl.in

  Log Message:
  -----------
  Protocol generator: record last error message received

Store this as a string (as well as the error code) so that we can report it to
the user, for example in test failure messages.


  Commit: 3dca0831ef2718193d3936d7bc038188b94e9a00
      https://github.com/boxbackup/boxbackup/commit/3dca0831ef2718193d3936d7bc038188b94e9a00
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Logging.h
    M lib/server/Socket.cpp

  Log Message:
  -----------
  Improve error message on hostname lookup failure

Throw exceptions with a message, including the OS error, which means retrieving
it properly from the winsock library on Windows.


  Commit: 03b1973de8d733761fff6709261b29d458af4006
      https://github.com/boxbackup/boxbackup/commit/03b1973de8d733761fff6709261b29d458af4006
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/m4/boxbackup_tests.m4

  Log Message:
  -----------
  Make narrowing conversions an error

E.g. on ARM64 with unsigned chars, this is a real error, and causes the build
to fail:
https://buildd.debian.org/status/fetch.php?pkg=boxbackup&arch=arm64&ver=0.11.1~r2837-4&stamp=1485057548&raw=0

(cherry picked from commit 3433291fc5bfbbdc87385796c26c44699edf5c0c)


  Commit: 784fe4320f70c125f8d24d02f195e30064e09ab3
      https://github.com/boxbackup/boxbackup/commit/784fe4320f70c125f8d24d02f195e30064e09ab3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/CMakeLists.txt
    M infrastructure/m4/boxbackup_tests.m4
    M lib/intercept/intercept.cpp
    M lib/intercept/intercept.h

  Log Message:
  -----------
  Fix incorrect detection of the need to intercept lxstat

For some reason, #if defined __GNUC__ && __GNUC__ >= 2 was true on OSX,
resulting in intercepts not working properly.  It was also broken on MIPS64,
causing test/raidfile to fail with errors like: TEST FAILURE: Condition
[TestGetFileSize(stripe1fn) == fs1] failed at testraidfile.cpp:415

https://buildd.debian.org/status/fetch.php?pkg=boxbackup&arch=mips64el&ver=0.11.1~r2837-4&stamp=1485060478&raw=0

Now we detect when to intercept Linux' lxstat syscall using autoconf macros.
We also detect whether to intercept stat64 (instead of stat) based on whether
the stat64 function exists.

(cherry picked from commit a042c9951fabc1fb4f57e6d13d739192dda76025)

Fix d2775d5b


  Commit: 198a48b7011234ec6dbec93b2a2f49e37582c159
      https://github.com/boxbackup/boxbackup/commit/198a48b7011234ec6dbec93b2a2f49e37582c159
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/BoxTime.cpp

  Log Message:
  -----------
  Increase precision of timing on Windows.

Should hopefully reduce random failures of timing-dependent tests which
rely on subsecond precision for accuracy.

(cherry picked from commit c845b2e39fffeb560983a301d810616a6495469d)
(cherry picked from commit ce7e000d43a91dcd0d39ee3a505521e700875556)


  Commit: e4d488d1a07bf1db32e96a9526d1fd1ea54f0967
      https://github.com/boxbackup/boxbackup/commit/e4d488d1a07bf1db32e96a9526d1fd1ea54f0967
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/windows/CMakeLists.txt

  Log Message:
  -----------
  Switch PCRE back to an official release


  Commit: 2d31a3178ba5a39af594c1a0188748f5c8045b18
      https://github.com/boxbackup/boxbackup/commit/2d31a3178ba5a39af594c1a0188748f5c8045b18
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/windows/CMakeLists.txt

  Log Message:
  -----------
  Remove BoxBackup install step from Windows unibuild

We don't need to install anything in C:\Program Files\BoxBackup, and often
don't have permission to do that anyway.


  Commit: 95b5d8f14f59cf8a887bccfa78c1d0fda0008aba
      https://github.com/boxbackup/boxbackup/commit/95b5d8f14f59cf8a887bccfa78c1d0fda0008aba
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/cmake/windows/CMakeLists.txt

  Log Message:
  -----------
  Upgrade to OpenSSL 1.0.2l

Run OpenSSL tests after building it for Windows Unibuild


  Commit: 3ecc0f2211b3e1b12dd6770c3e8d39a4b613c701
      https://github.com/boxbackup/boxbackup/commit/3ecc0f2211b3e1b12dd6770c3e8d39a4b613c701
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/raidfile/RaidFileWrite.cpp

  Log Message:
  -----------
  Improve exception messages from RaidFileWrite

Use THROW_SYS_FILE_ERROR to include the system error message in the exception
message. Replace calls to BOX_LOG_SYS_ERROR where previously used.


  Commit: 58870818a787cd658fa7b9df90a9a90f5fb6ee45
      https://github.com/boxbackup/boxbackup/commit/58870818a787cd658fa7b9df90a9a90f5fb6ee45
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M .travis.yml

  Log Message:
  -----------
  Travis CI: exclude (don't build) tags created by AppVeyor

AppVeyor creates new tags for each release (binary build), which have the same
git commit that we already built, so building it again is a waste.


  Commit: 73f70d5c655925c8225cb9f71f8980ec237b87d0
      https://github.com/boxbackup/boxbackup/commit/73f70d5c655925c8225cb9f71f8980ec237b87d0
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/HTTPResponse.h
    M lib/httpserver/S3Client.cpp

  Log Message:
  -----------
  Add ResponseCodeString shortcut to HTTPResponse

Useful for debug logging and exception messages.

Add the actual HTTP response to the exception message in
S3Client::CheckResponse, to help with debugging.


  Commit: 3e4ec9293867452f5f07245395aaf0079560a4dd
      https://github.com/boxbackup/boxbackup/commit/3e4ec9293867452f5f07245395aaf0079560a4dd
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/HTTPRequest.cpp
    M lib/httpserver/HTTPRequest.h
    M lib/httpserver/S3Simulator.cpp

  Log Message:
  -----------
  Add option to include parameters in HTTPRequest::GetRequestURI

This is needed to support the ListBucket command.


  Commit: 0b18b384375bdbf0dca3803b6740eff7516c38ef
      https://github.com/boxbackup/boxbackup/commit/0b18b384375bdbf0dca3803b6740eff7516c38ef
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/Utils.cpp

  Log Message:
  -----------
  Fix FileExists in Utils.cpp

Testing for st.st_mode & S_IFLNK doesn't work on OSX, because IFLNK and IFREG
share bits, so regular files have a nonzero result and appear to be links. It
seems safer and more readable to use the mode test macros, e.g. S_ISLNK and
S_ISDIR.


  Commit: c80dbca83ec9467c449c35fd35ff34fcaaa47aa2
      https://github.com/boxbackup/boxbackup/commit/c80dbca83ec9467c449c35fd35ff34fcaaa47aa2
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Client.cpp
    M lib/httpserver/S3Client.h
    M lib/httpserver/S3Simulator.cpp
    M lib/httpserver/S3Simulator.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add ListBucket command support to S3Simulator and S3Client


  Commit: 2cfaafc3452d237d5b646a717afa1c61cab8113f
      https://github.com/boxbackup/boxbackup/commit/2cfaafc3452d237d5b646a717afa1c61cab8113f
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/ReadLoggingStream.cpp

  Log Message:
  -----------
  Fix negative estimated remaining time due to 64-bit integer overflow on large files.

(cherry picked from commit b27d4e7c61b04db054399435b5c57df1f9b1832b)


  Commit: a3a7dd26ebb04637348dfa9f9ce63dcae6a1938e
      https://github.com/boxbackup/boxbackup/commit/a3a7dd26ebb04637348dfa9f9ce63dcae6a1938e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/httpserver/S3Client.cpp
    M lib/httpserver/S3Client.h
    M lib/httpserver/S3Simulator.cpp
    M lib/httpserver/S3Simulator.h
    M test/httpserver/testhttpserver.cpp

  Log Message:
  -----------
  Add support for the HEAD and DELETE methods to the S3Simulator and S3Client.


  Commit: a453085ee87c2221514e4abd3a2838c4a202ae2e
      https://github.com/boxbackup/boxbackup/commit/a453085ee87c2221514e4abd3a2838c4a202ae2e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/BoxPlatform.h

  Log Message:
  -----------
  Enable memory testing under Darwin, as it does work now

(cherry picked from commit 86dc5ff3666c934dcf4fce261a93431b78bf018f)


  Commit: 20c1b2df7b6f9672a1a451bda83e0d3b20fe846a
      https://github.com/boxbackup/boxbackup/commit/20c1b2df7b6f9672a1a451bda83e0d3b20fe846a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/HousekeepStoreAccount.cpp

  Log Message:
  -----------
  Rename local variable

First part of refactoring HousekeepStoreAccount to use BackupFileSystem.


  Commit: 738d9ba6a2ba04f8ea2e634cf3e21ffa5f890d1f
      https://github.com/boxbackup/boxbackup/commit/738d9ba6a2ba04f8ea2e634cf3e21ffa5f890d1f
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreException.txt
    M lib/backupstore/BackupStoreRefCountDatabase.cpp
    M lib/backupstore/BackupStoreRefCountDatabase.h

  Log Message:
  -----------
  Fix conflict over unlocked refcount DB

If BackupStoreCheck is are read-only, then it should not open a "temporary"
database in the old sense, because that does actually change the store: the
temporary file would conflict with any other process which wants to do the same
thing at the same time (e.g. housekeeping), and if neither process locks the
store, they will break each other.

Instead, we now distinguish between "potential" refcount DBs (of which there
can only be one at a time, and which require a lock to create) and really
"temporary" ones which are created in a temporary directory, can never become
permanent via Commit(), do not require a lock, and are unlimited in number.
Commit() will rename them, but still in the temporary directory, so it has no
effect on the store.

This requires some changes to the BackupStoreRefCountDatabase::Create interface
to add new flags.


  Commit: b01f623b8b3bcf0a67727e61eb2632cda55b3e66
      https://github.com/boxbackup/boxbackup/commit/b01f623b8b3bcf0a67727e61eb2632cda55b3e66
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreRefCountDatabase.cpp
    M lib/backupstore/BackupStoreRefCountDatabase.h

  Log Message:
  -----------
  Refactor BackupStoreRefCountDatabase to an abstract interface

This makes it easier to cleanly subclass in BackupFileSystem, to change its
behaviour by hooking into its Commit() method.


  Commit: f4a567582d8de5ed7dcfd6598a602cf9db694bca
      https://github.com/boxbackup/boxbackup/commit/f4a567582d8de5ed7dcfd6598a602cf9db694bca
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreException.txt
    M lib/backupstore/BackupStoreRefCountDatabase.cpp
    M lib/backupstore/BackupStoreRefCountDatabase.h

  Log Message:
  -----------
  Move management of BackupStoreRefCountDatabase into BackupFileSystem

This is needed to allow BackupFileSystem to commit the database to storage on
request, and to cache it, which is needed for S3 support.


  Commit: 294f34c4241247e761b423db53e76f95659c4e6e
      https://github.com/boxbackup/boxbackup/commit/294f34c4241247e761b423db53e76f95659c4e6e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreAccounts.cpp
    M lib/backupstore/BackupStoreAccounts.h
    M lib/backupstore/BackupStoreException.txt
    M lib/backupstore/BackupStoreInfo.cpp
    M lib/backupstore/BackupStoreInfo.h

  Log Message:
  -----------
  Initial refactor of BackupAccountControl to use BackupFileSystem

Abstract away some account operations using BackupFileSystem so that they can
be implemented differently for S3 accounts. In particular, account opening and
NamedLock usage were targets for this refactor. BackupStoreInfo creation and
opening ended up being partially addressed as well. This significantly reduces
the diffs to the s3_support branch.


  Commit: 567684c8eaa190ef2468ddb37fb72fa37bee64fb
      https://github.com/boxbackup/boxbackup/commit/567684c8eaa190ef2468ddb37fb72fa37bee64fb
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/m4/boxbackup_tests.m4
    M lib/backupstore/BackupProtocol.h
    M lib/backupstore/BackupStoreFile.h
    M lib/backupstore/BackupStoreFileCmbIdx.cpp
    M lib/backupstore/BackupStoreFileEncodeStream.h
    M lib/common/BufferedStream.h
    M lib/common/BufferedWriteStream.h
    M lib/common/CollectInBufferStream.h
    M lib/common/FileStream.h
    M lib/common/MemBlockStream.h
    M lib/common/PartialReadStream.h
    M lib/common/RateLimitingStream.h
    M lib/common/ReadGatherStream.h
    M lib/common/ReadLoggingStream.h
    M lib/common/SelfFlushingStream.h
    M lib/common/ZeroStream.h
    M lib/compress/CompressStream.h
    M lib/raidfile/RaidFileRead.h
    M lib/raidfile/RaidFileWrite.h
    M lib/server/ProtocolUncertainStream.h
    M lib/server/SocketStream.h
    M lib/server/SocketStreamTLS.h
    M lib/server/TcpNice.h
    M lib/server/WinNamedPipeStream.h
    M test/bbackupd/testbbackupd.cpp
    M test/compress/testcompress.cpp

  Log Message:
  -----------
  Enable compiler warning -Werror=overloaded-virtual, and fix


  Commit: fa88a49b07ff1fa5348f01f9b2aa1b9369ffa5ba
      https://github.com/boxbackup/boxbackup/commit/fa88a49b07ff1fa5348f01f9b2aa1b9369ffa5ba
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/HousekeepStoreAccount.cpp
    M lib/backupstore/HousekeepStoreAccount.h
    M lib/backupstore/StoreTestUtils.cpp
    M lib/backupstore/StoreTestUtils.h
    M lib/bbstored/BBStoreDHousekeeping.cpp

  Log Message:
  -----------
  Refactor HousekeepStoreAccount to use BackupFileSystem

This involved moving big chunks of functionality into RaidBackupFileSystem, for
example CombineFile, CombineDiffs and RaidPutFileCompleteTransaction. Not much
is implemented for S3BackupFileSystem yet.


  Commit: 3f6d408405a133278cb518852f060524a69228d6
      https://github.com/boxbackup/boxbackup/commit/3f6d408405a133278cb518852f060524a69228d6
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/backupstore/BackupStoreCheck2.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 1

Pass the BackupFileSystem from BackupAccountControl to BackupStoreCheck, and
use it for locking the account (actually a no-op because it's already locked).
Trivial, but it's a start.


  Commit: 093c74dcb428cf91a12665efd7e8f8bfcac560b7
      https://github.com/boxbackup/boxbackup/commit/093c74dcb428cf91a12665efd7e8f8bfcac560b7
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/backupstore/BackupStoreCheck2.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 2

Use BackupFileSystem to access the refcount database.


  Commit: 35535e2cbfc51452e1220ca7aa3e5f8ec0395452
      https://github.com/boxbackup/boxbackup/commit/35535e2cbfc51452e1220ca7aa3e5f8ec0395452
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreCheck2.cpp
    M lib/backupstore/BackupStoreInfo.cpp
    M lib/backupstore/BackupStoreInfo.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 3

Use BackupFileSystem to access the per-account BackupStoreInfo.


  Commit: f94bc6f6782e384d9193971e2985ddcab0e89368
      https://github.com/boxbackup/boxbackup/commit/f94bc6f6782e384d9193971e2985ddcab0e89368
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreCheck.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 4

Use BackupFileSystem to EnsureObjectIsPermanent.


  Commit: 3bb73fb5937c4bee9f769c530d3c950c23123454
      https://github.com/boxbackup/boxbackup/commit/3bb73fb5937c4bee9f769c530d3c950c23123454
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/backupstore/BackupStoreCheck2.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 5

Use BackupFileSystem to Get and Put Files and Directories.


  Commit: 4b84ded76b84810cbae2be967f7b681959f0b783
      https://github.com/boxbackup/boxbackup/commit/4b84ded76b84810cbae2be967f7b681959f0b783
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreCheck.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 6

Use BackupFileSystem to delete corrupt objects.


  Commit: 6fecc9420d3d21093e1e91b8f73e371f4967ffc5
      https://github.com/boxbackup/boxbackup/commit/6fecc9420d3d21093e1e91b8f73e371f4967ffc5
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck2.cpp
    M lib/backupstore/BackupStoreException.txt

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 7

Move most low-level filesystem structure check code into BackupFileSystem, and
add specialised implementation for S3.


  Commit: 3f6e5b209711bdf6affa7fd679206ae5fdb5f307
      https://github.com/boxbackup/boxbackup/commit/3f6e5b209711bdf6affa7fd679206ae5fdb5f307
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupStoreCheck.cpp
    M lib/backupstore/BackupStoreCheck.h
    M lib/backupstore/BackupStoreCheck2.cpp

  Log Message:
  -----------
  Refactor BackupStoreCheck to use BackupFileSystem, part 8

Remove last vestiges of RaidFile from BackupStoreCheck.


  Commit: 1ccda544fa5b37fd099a249a8754807163142aed
      https://github.com/boxbackup/boxbackup/commit/1ccda544fa5b37fd099a249a8754807163142aed
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreCheck2.cpp

  Log Message:
  -----------
  Rename some local variables in BackupStoreCheck


  Commit: 3492170b2b3a7b523abdb9610de7f3260101a174
      https://github.com/boxbackup/boxbackup/commit/3492170b2b3a7b523abdb9610de7f3260101a174
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupclient/BackupDaemonConfigVerify.cpp
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreException.txt
    M test/s3store/testfiles/bbackupd.conf

  Log Message:
  -----------
  Add configuration for S3 local cache directory


  Commit: 1f28ca1666d4fb797de2126ee535a7389fbb2032
      https://github.com/boxbackup/boxbackup/commit/1f28ca1666d4fb797de2126ee535a7389fbb2032
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp

  Log Message:
  -----------
  Fix repeated calls to TryGetLock() when already holding lock


  Commit: 3b6d71b2b7b8d76a4ef8a882c84084d6cc8d050f
      https://github.com/boxbackup/boxbackup/commit/3b6d71b2b7b8d76a4ef8a882c84084d6cc8d050f
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Implement RefCountDatabase methods in S3BackupFileSystem


  Commit: 4e8932b1129a26b0215902f5900bdc5ea2097aa9
      https://github.com/boxbackup/boxbackup/commit/4e8932b1129a26b0215902f5900bdc5ea2097aa9
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Fix writeback of refcount databases on BackupFileSystem destruction

Call ReleaseLock in the child destructor (not the parent) to allow the refcount
database to clean itself up (normally involving calling
BackupFileSystem::SaveRefCountDatabase) before the BackupFileSystem is too
destroyed to be able to fulfil the request.


  Commit: 5b35b6870f411b5c08ac369979950e99bf42e890
      https://github.com/boxbackup/boxbackup/commit/5b35b6870f411b5c08ac369979950e99bf42e890
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/bbstored/BBStoreDHousekeeping.cpp
    M lib/bbstored/BackupStoreDaemon.cpp

  Log Message:
  -----------
  Wait for housekeeping to finish before bbstored exits

Should fix random test failures due to housekeeping process realising that the
master has asked it to terminate, and logging that it has, after the master has
already died and the test finished, confusing the test runner with its extra
output. Should also help make the occasionally-reported housekeeping crashes
more obvious and easier to debug.


  Commit: 1fab5de958c9f3a71a687ff3114bddfac4b4727e
      https://github.com/boxbackup/boxbackup/commit/1fab5de958c9f3a71a687ff3114bddfac4b4727e
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h

  Log Message:
  -----------
  Remove useless Get/Put/HeadObject methods from S3BackupFileSystem

These should not have been part of the API, and are not needed since mrClient
has the same methods.


  Commit: 9148f9d49c955c2c7ab894539d3d79796387095c
      https://github.com/boxbackup/boxbackup/commit/9148f9d49c955c2c7ab894539d3d79796387095c
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupAccountControl.cpp
    M lib/backupstore/BackupAccountControl.h
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreInfo.cpp
    M lib/backupstore/BackupStoreInfo.h
    R test/s3store/testfiles/store/subdir/dirs/create-me.txt
    M test/s3store/tests3store.cpp

  Log Message:
  -----------
  Refactor BackupAccountControl to use BackupFileSystem


  Commit: a38d948b2909ae980389112180311d395af0eed3
      https://github.com/boxbackup/boxbackup/commit/a38d948b2909ae980389112180311d395af0eed3
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupStoreFile.cpp
    M lib/backupstore/BackupStoreFile.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Refactor BackupStoreFile::VerifyStream from write to read side

This allows us to wrap an existing stream (not necessarily a file, e.g. a
streaming HTTPRequest) in a VerifyStream and pass that stream to a
S3PutFileCompleteTransaction, which isn't just going to CopyStreamTo()
somewhere, but do something more complex to it.


  Commit: f86e4d4816a04d32c31f49d019e72ec08b0bf47b
      https://github.com/boxbackup/boxbackup/commit/f86e4d4816a04d32c31f49d019e72ec08b0bf47b
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/StoreTestUtils.cpp
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Fix a long-standing bug in the set_refcount() test helper function

Previously it would truncate the expected refcount list at the first zero entry,
instead of just removing zero entries from the end.

Also move some test code to test_server_commands which should have been there,
since they were causing issues with the check for the refcount database in
test_server_housekeeping. It's hard to disentangle these two changes.


  Commit: 1127faf39d00a027921d3494f69f50d4b87ab33a
      https://github.com/boxbackup/boxbackup/commit/1127faf39d00a027921d3494f69f50d4b87ab33a
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Add extra refcount checks to test_server_housekeeping


  Commit: ef32a2f2f656e838faec99a0a66e1449ea470951
      https://github.com/boxbackup/boxbackup/commit/ef32a2f2f656e838faec99a0a66e1449ea470951
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupCommands.cpp
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreContext.cpp
    M lib/backupstore/BackupStoreContext.h
    M lib/backupstore/BackupStoreDirectory.h
    M lib/backupstore/BackupStoreException.txt
    M lib/backupstore/StoreTestUtils.cpp
    A lib/common/ByteCountingStream.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Refactor BackupStoreContext to use BackupFileSystem


  Commit: 2351a425824fc052911c2d1a5b30cb9bba1b40dc
      https://github.com/boxbackup/boxbackup/commit/2351a425824fc052911c2d1a5b30cb9bba1b40dc
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Enable and fix warnings in infrastructure/makebuildenv.pl


  Commit: 1dd7cb782733f8edf79585d814fc4b12a2317352
      https://github.com/boxbackup/boxbackup/commit/1dd7cb782733f8edf79585d814fc4b12a2317352
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M infrastructure/makebuildenv.pl.in

  Log Message:
  -----------
  Fix Makefile dependency tracking of configured files

This allows protocol files to be regenerated automatically if
makeprotocol.pl.in changes, and similarly exception files and
makeexception.pl.in.


  Commit: 3284d9b744298703e7569c234e088b213a3643e1
      https://github.com/boxbackup/boxbackup/commit/3284d9b744298703e7569c234e088b213a3643e1
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M bin/bbackupctl/bbackupctl.cpp
    M bin/bbackupquery/bbackupquery.cpp
    M lib/bbackupd/BackupDaemon.cpp
    M lib/bbstored/BBStoreDHousekeeping.cpp
    M lib/common/CommonException.txt
    M lib/common/FdGetLine.cpp
    M lib/common/FdGetLine.h
    R lib/common/GetLine.cpp
    R lib/common/GetLine.h
    M lib/common/IOStream.cpp
    M lib/common/IOStreamGetLine.cpp
    M lib/common/IOStreamGetLine.h
    A lib/common/LineBuffer.cpp
    A lib/common/LineBuffer.h
    M lib/httpserver/HTTPException.txt
    M lib/httpserver/HTTPHeaders.cpp
    M lib/httpserver/HTTPRequest.cpp
    M lib/httpserver/HTTPResponse.cpp
    M lib/httpserver/S3Simulator.cpp
    M lib/httpserver/S3Simulator.h
    M lib/server/ServerControl.cpp
    M lib/server/SocketStream.cpp
    A test/backupstore/testfiles/bbackupd.conf
    A test/backupstore/testfiles/s3simulator.conf
    M test/backupstorefix/testbackupstorefix.cpp
    M test/basicserver/testbasicserver.cpp
    M test/bbackupd/testbbackupd.cpp
    M test/common/testcommon.cpp

  Log Message:
  -----------
  Refactor GetLine

The class name was a problem, because the method that we want to call on it is
also called GetLine, which looks too much like a constructor in C++, so I
renamed it to LineBuffer.  I haven't yet renamed the child classes.

Also, it was impossible to distinguish between the different causes of
GetLine() returning false (timeout and signal) and EOF could only be checked by
calling a different function. Now all of these causes throw different
exceptions.

This really fixes the problem with attaching a debugger to a process waiting in
GetLine, which would previously cause the read() to return immediately with
EINTR, which we never retried because it looked like a timeout.


  Commit: 79709dbe2b6486ee95d9e12146b5e2b7557c3cf9
      https://github.com/boxbackup/boxbackup/commit/79709dbe2b6486ee95d9e12146b5e2b7557c3cf9
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/common/DebugMemLeakFinder.cpp
    M lib/common/MemLeakFinder.h

  Log Message:
  -----------
  Implement placement operator delete

"If the object is being created as part of a new expression, and an exception
is thrown, the object’s memory is deallocated by calling the appropriate
deallocation function. If the object is being created with a placement new
operator, the corresponding placement delete operator is called—that is, the
delete function that takes the same additional parameters as the placement new
operator. If no matching placement delete is found, no deallocation takes
place."

So to avoid memory leaks, we need to implement placement delete operators that
correspond to our placement new, which we use for leak detection (ironically)
in debug builds.


  Commit: 449c59c89963a539ff88ba9a2acb857100fcf287
      https://github.com/boxbackup/boxbackup/commit/449c59c89963a539ff88ba9a2acb857100fcf287
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupclient/BackupDaemonConfigVerify.cpp
    M lib/backupstore/BackupAccountControl.cpp
    M lib/httpserver/S3Client.h

  Log Message:
  -----------
  Enable support for S3 virtual hosts in BackupAccountControl

This enables the S3 bucket name to be included in the virtual hostname, for
example bucketname.s3.amazonaws.com, when connecting to a different hostname
such as localhost. This makes bucket names usable in tests with
BackupAccountControl.


  Commit: db7868e79447be73c67bb9ac56672dd6ff206077
      https://github.com/boxbackup/boxbackup/commit/db7868e79447be73c67bb9ac56672dd6ff206077
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/BackupStoreException.txt

  Log Message:
  -----------
  Properly implement S3BackupFileSystem::GetPermanentRefCountDatabase


  Commit: 572f107571624d87827ff9de4923a531ddff6b35
      https://github.com/boxbackup/boxbackup/commit/572f107571624d87827ff9de4923a531ddff6b35
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-24 (Sun, 24 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.cpp

  Log Message:
  -----------
  Remove always-false assertion in S3BackupFileSystem::GetDirectory

This was designed to stop untested code from running. Now we are ready to use
this code, with tests soon to come.


  Commit: c3884ba1eb9fb1baabcfd591f134451d6b26f8ba
      https://github.com/boxbackup/boxbackup/commit/c3884ba1eb9fb1baabcfd591f134451d6b26f8ba
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-25 (Mon, 25 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupFileSystem.h
    M lib/backupstore/StoreTestUtils.cpp
    M lib/backupstore/StoreTestUtils.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Add store test helpers for specialised tests


  Commit: 4a3d22adc02291c337f9b6130f388a1ec93ab23d
      https://github.com/boxbackup/boxbackup/commit/4a3d22adc02291c337f9b6130f388a1ec93ab23d
  Author: Chris Wilson <chris+github at qwirx.com>
  Date:   2017-09-25 (Mon, 25 Sep 2017)

  Changed paths:
    M lib/backupstore/BackupStoreContext.h
    M test/backupstore/testbackupstore.cpp

  Log Message:
  -----------
  Make BackupStoreContext::ClearDirectoryCache() public

Needed to clear the cache in backupstore tests specialised for S3.


Compare: https://github.com/boxbackup/boxbackup/compare/b80bee142d9c...4a3d22adc022


More information about the Boxbackup-commit mailing list