Windows Client Releases

Changes that affect only the Windows platform are marked with (Windows). Changes that affect all platforms built from this branch are not thus marked. This makes no difference to users of the Windows binary, but changes which affect other platforms are less likely to be merged into the trunk.

Build 1857

Released on 2007/09/23. Download here.

Changes since the last release (1837):

  • Add James O'Gorman's NotifySysAdmin.vbs script to client parcel on Windows [1838]
  • Update NotifySysAdmin.vbs to send a message to the event log if it fails to send an email (James O'Gorman) [1837]
  • Don't include the install-backup-client script in Windows builds, as it's pretty useless without Cygwin (Pete Jalajas) [1841]
  • Fix the examples in the sample configuration file [1847]
  • Make Windows Service-related command-line processing use getopt, like the other options [1849] [1850] [1852] [1854]
  • Report more useful error messages on connect() failure on Windows [1851]
  • Record the exit status of the daemon when running as a service, and return it to Windows so that Windows doesn't tell the admin that "the service did not report an error" when it stopped unexpectedly [1853]
  • When failing to contact the SCM, report a textual error message as well as the error code [1853]
  • InstallService uses the new "-s" option instead of "--service" on the service command line [1853]
  • Add proper usage information (-h option) in Daemon for all subclasses [1855]
  • Add usage information for service options in BackupDaemon [1855]
  • Use the specified service name when installing and removing the service [1856]
  • Pass the service name on the service command line, and use it for event log messages [1856]
  • Improve timer debugging on Windows [1857]

Build 1837

Released on 2007/09/14. Download here.

Changes since the last release (1822):

  • Support multiple named pipes on Win32.
  • Don't disable logging on Win32 console.
  • Don't initialise the command socket thread (on Win32) until the configuration is known.
  • Commonise some code between Windows and Unix daemon startup.
  • Update bbackupd.conf to match improved comments and default settings in the Unix version generated by bbackupd-config.
  • Don't abort if one of the location paths doesn't exist, just print a warning and continue.
  • Use an auto_ptr to avoid memory leaks when setting up a location fails.

Build 1822

Released on 2007/09/07. Download here.

Changes since the last release (1814):

  • Handle missing NotifyScript? configuration key properly. [1817]
  • Report the name of missing configuration keys in an error message. [1818]

Build 1814

Released on 2007/09/07. Download here.

Changes since the last release (1781):

  • Use new logging framework almost everywhere. [1784] [1790] [1806] [1809] [1810] [1811]
  • Don't print syslog messages to the console any more. [1814]
  • Call the notification script whenever backup starts or finishes. [1805]
  • Don't initialise DebugMemLeakFinder? twice when running as a service. [1813]
  • Return a non-zero exit code when running as a service fails. [1813]
  • Fix backup of UNC shares, should allow Box Backup to backup UNC paths when running as a service. [1814]

Build 1781

Released on 2007/07/29. Download here.

Changes since the last release (1692):

  • Add a new -F option for daemons, which runs in the foreground but still accepts multiple connections, unlike -D or SINGLEPROCESS. (cosmetic on Win32, server is single process only) [1741]
  • Log reasons for failure to connect to a socket. [1742]
  • Warn if an exception is thrown, with line number, as this shouldn't be happening on production systems anyway. [1744]
  • Add more debugging checks and messages for location setup error reported by Pete Jalajas (http://lists.warhead.org.uk/pipermail/boxbackup/2007-July/003668.html) [1745]
  • More helpful error messages when location setup failed. [1748]
  • Log more detailed errors when the server returns an error while uploading a file. [1781]

Build 1692

Released on 2007/05/26. Download here.

Changes since the last release (1662):

  • Fix saving and restoring archived state, broken in 1662, thanks Gary! [1672]
  • Fix object use after delete, could crash client, thanks Gary! [1673]
  • Fix regular expression support to work on all platforms, and disabuse HAVE_REGEX_H [1677] [1678] [1682]
  • Internal cleanups, pass std::strings to various classes instead of char arrays [1683] [1684] [1689]
  • All programs use the directory of the executable as the default config file location, instead of the hardcoded "C:\Program Files\Box Backup". Thanks to Paul MacKenzie?, Per Thomsen, Pete Jalajas, Stuart Sanders, Dave Bamford and Gary for pushing me to do this. (fixes #12) [1685] [1686] [1687] [1688] [1690] [1691] [1692]
  • Update copyrights to 2007, thanks Per Thomsen! [1670]

Build 1662

Released on 2007/05/16. Download here.

Changes since the last release (1569):

  • Fix backup, restore and compare of files over 2 GB, hopefully ([1585], [1586], [1587], [1598], [1599], [1621], [1623])
  • Log progress of large file backups at trace level ([1589], [1590])
  • Notify (log) during full file uploads ([1594])
  • Improve error messages in bbackupquery when comparing or getting a file fails with an exception ([1597], [1600])
  • Improve error reporting in bbackupquery ([1638])
  • Initialise logging framework and use for banner in bbackupquery ([1601], [1602])
  • Include LICENSE.txt in binary package, but not Nick's old ReadMe?.txt ([1655])
  • Save unused locations across bbackupd restarts, so that they will be deleted when their time is up, thanks to Gary ([1658], refs #18)
  • Respect server hard limits rather than soft limits, to allow use of zero as a soft limit, thanks to Gary ([1659], [1662], refs #19)
  • Fix restore to a directory under the root, with or without drive letter (c:\test\ or \test\), thanks to Mikael Syska ([1660], [1661])

Build 1569

Released on 2007/04/22. Download here.

Changes since the last release (1516):

  • [1521] Added commentary to RaidFileDoesntExist? exception.
  • [1548] [1549] Use logging framework to log exceptions thrown and stack traces, making them controllable and appear in the Windows event log.
  • [1550] Log event name instead of numeric code when notifying sysadmin in bbackupd.
  • [1551] Add options to log timestamps, and a custom tag, with each message to the console.
  • [1552] Add Daemon -V option, which sets maximum verbosity in one go.
  • [1552] Add Daemon -T option, which adds timestamps to console logs.
  • [1552] Add Daemon -t option, which enabled and sets the tag used on console logs.
  • [1553] Add test --bbackupd-args and --bbstored-args options, which may be used to pass additional command-line parameters to bbackupd and bbstored in some tests.
  • [1553] Add test -t and -T options, which add tags and timestamps to log messages using the logging framework inside the tests themselves.
  • [1554] Use additional arguments from command line options when starting bbackupd and bbstored in test/bbackupd.
  • [1569] Fix crash in bbackupquery when comparing a location whose path ends with a directory separator, accidentally introduced in build 1516.

Build 1516

Released on 2007/04/16. Download here.

Changes since the last release (1280):

  • [1294] Use new logging framework (from chris/merge).
  • [1299] Added detection of reparse points, and treat them like mount points (don't recurse down into them).
  • [1302] Fix memory leaks and false alarms detected by new memory leak code.
  • [1310] Initialise and use logging (from chris/merge).
  • [1311] Fix memory leak (from chris/merge).
  • [1317] Throw Common AccessDenied? instead of Common OSFileOpenError when access to a file is denied, to improve log messages (from chris/merge).
  • [1318] Use gettimeofday() if we have it, to return system time more accurately and avoid spinning (from chris/merge).
  • [1319] Log a warning for exclude entries which end in a path separator and will therefore never match (from chris/merge).
  • [1322] Avoid infinite loops if we can't bind socket, or something else goes wrong and throws an exception before the server starts accepting connections (from chris/merge).
  • [1324] Use new logging framework.
  • [1327] Log excluded directories still present on the server during compare.
  • [1327] Don't recurse into excluded directories during compare.
  • [1327] Document that restore -d restores deleted files inside a not-deleted directory (from chris/merge)
  • [1340] Fix two memory leaks and one buffer overflow in codepage conversion code.
  • [1341] Watch out for our leak tracking data being destroyed and don't crash when subsequent objects are destroyed.
  • [1342] Use Timers to manage diffs and keepalives. Remove signal handler mess from BackupClientContext?.
  • [1342] Send keepalives while scanning a directory, in case it's a very big or slow directory.
  • [1342] Enable keepalives and diff time limits by default, at 60 and 600 seconds respectively.
  • [1342] Add LogAllFileAccess option for verbose file access logging for debugging.
  • [1342] Add support for ExtendedLogFile? directive to write extended (protocol) log to a file (disable ExtendedLogging? unless you want to log to your system logs as well).
  • [1342] Don't delete remote directories just because we can't stat the local one.
  • [1342] Catch failure to read attributes from a location directory and log it rather than aborting the backup run.
  • [1347] Fix potential access beyond end of array in short filenames.
  • [1359] Use logging framework.
  • [1364] Improve GetErrorMessage?() by including the error number/code in the message (helps debugging on foreign language versions of Windows)
  • [1368] [1370] Use logging framework.
  • [1431] Test for expected behaviour when modifying untracked and tracked files without changing their modtime.
  • [1431] Test that bbackupd notifies the sysadmin when throwing an exception.
  • [1433] Trace reasons for uploading (or not) each file.
  • [1433] Add a new notification constant, NotifyEvent?_BackupError, for use when an exception occurs during the backup.
  • [1433] Make bbackupd notify sysadmin when an exception occurs during the backup, using this error code, and the notification string "backup-error".
  • [1436] Add emulated rename() with path conversion.
  • [1442] Use memmove() for overlapping buffers (Charles Lecklider).
  • [1449] Initialise logging framework.
  • [1457] Register our event source with the name passed to us, so that it goes into the event logs.
  • [1458] Improve logging of pipe errors by including the error message.
  • [1458] Reinitialise the OVERLAPPED structure each time we start a new overlapped read (Charles Lecklider).
  • [1458] Don't log errors or throw exceptions when we get ERROR_NO_DATA, which just means that the pipe is being closed. Treat it as a normal remote close (EOF) instead.
  • [1458] Don't log an error if DisconnectNamedPipe? tells us that the remote end already closed the pipe (ERROR_PIPE_NOT_CONNECTED)
  • [1459] Use our new ClientException? codes for clock skew and archive problems.
  • [1459] Better handle a case where a force-sync command comes in immediately after (or during) a sync, i.e. less than MinimumFileAge? seconds after the last one. In this case, just move back the syncPeriodStart by 1 second.
  • [1462] Initialise logging framework and set our program name.
  • [1463] Treat ERR_PIPE_NOT_CONNECTED during pipe reads as EOF as well.
  • [1464] Change named pipe from message to byte mode (Charles Lecklider).
  • [1496] Allow '/' as a path separator on Win32.
  • [1512] Add a warning that comparing locations with a final directory separator may fail (Stefan Tauner).
  • [1514] Fix emulated chdir to work with relative paths and with bbackupquery's "sh" command (which doesn't like UNC paths).
  • [1514] Fix rare memory leak.
  • [1516] Return an error code on failure of lcd command.
  • [1516] Return an error code if get command fails due to the file already existing.

Build 1280

Released on 2007/02/10. Download here.

Changes since the last release (1096):

  • [1098] Fix a bug with handling optional files
  • [1099] Add logging in remaining places where Common OSFileOpenError can be thrown
  • [1233] Visual Studio 2005 compile fixes, thanks to Gary
  • [1271] Catch exceptions during restore
  • [1280] Merge in restore logging improvements from merge tree
  • [1283] Don't close the logging socket until we're really finished with it
  • [1284] Catch exceptions thrown by closing the WinNamedPipeStream? during shutdown and suppress them

Build 1096

Released on 2006/10/20. Download here.

Changes since the last release (784):

  • [786] Type conversion fixes suggested by Charles Lecklider (Windows)
  • [787] Fixed coding style and type issues in LocalProcessStream? (Windows)
  • [800] Fixed MakeFullPath?() to handle zero-length directory name
  • [813] Added more friendly error messages for cases pointed out by Pete Jalajas
  • [970] Better description of TLSReadFailed exception
  • [971] More accurate timing, avoids spin loops and eating CPU just before backup starts
  • [972] Avoid memory corruption in memory leak detection code in debug builds
  • [973] Add Access Denied exception (useful for distinguising from OSCommonFileError)
  • [1007] [1008] Build with static pcre library instead of pcreposix.dll
  • [1009] Added support for using Win32 temporary files in server and unit tests
  • [1010] Use INVALID_HANDLE_VALUE instead of NULL to represent invalid file handles under Win32
  • [1011] Added InvisibleTempFileStream? class and unit tests for it
  • [1012] Use InvisibleTempFileStream? instead of FileStream? for temporary files
  • [1017] Simplify code
  • [1021] Log unknown file types as unreadable files
  • [1023] Allow creation of directory records (and recursive descent into them) even when the store is full, to allow the user (client) to fix the problem by excluding some files and having bbackupd delete them from the store.
  • [1024] Import error handling improvements from merge branch
  • [1033] Replace if/else tree with switch, to help compiler to optimise it and detect errors
  • [1038] Expanded character set conversion API to allow arbitrary conversions (needed to handle command lines with international encodings)
  • [1039] Don't bother to split up the command line on Win32 (it's never used)
  • [1039] Return the PID of the created process on Win32
  • [1040] Properly handle broken pipe when using FileStream? to read from a local process, and the child quits. Report this as EOF rather than throwing.
  • [1041] Don't disable lock waiting loop on Win32 (even though it does nothing and is never called right now)
  • [1041] Use InvisibleTempFileStream? for temporary files on Windows, rather than deleting them ourselves.
  • [1042] Reinstate SendMessageToHousekeepingProcess?, but make it do nothing
  • [1043] Convert command line commands from system encoding to console encoding, so that we can convert them from console to UTF-8 later (yuck).
  • [1043] Don't try to read from the console when its file handle is invalid (e.g. when running under LocalProcessStream?).
  • [1046] Print localised error messages rather than error codes for all errors.
  • [1047] Convert both arguments of the Get command to local encoding, to support local paths in local encoding.
  • [1063] Share more code between Win32 port and other platforms.
  • [1069] Don't write to the interprocess comms socket if it's not open.

Build 784

Released on 2006/08/19. Download here.

Changes since the last release (777):

  • (Windows) Fixed support for SyncAllowScript.

Build 777

Released on 2006/08/11. Download here.

Changes since the last release (767):

  • (Windows) Fixed warnings when scanning directories containing excluded files that are also locked (e.g. pagefile.sys)

Build 767

Released on 2006/08/10. Download here.

Changes since the last release (716):

  • Fixed double slash problem when backing up root directory, which stopped paths from matching Exclude directives

Build 716

Released on 2006/08/06. Download here.

Changes since the last release (568):

  • (Windows) All unit tests run and pass
  • (Windows) Fixed support for installing service when configuration file path contains a space
  • Changed the exceeded storage limits message to a warning, not info
  • (Windows) Save PID file when running daemon
  • (Windows) Improved (largely rewritten) implementation of poll()
  • (Windows) Fixed non-blocking SSL sockets
  • (Windows) Fixed error handling on named pipe, thanks to Pascal Lalonde
  • (Windows) Internally convert Unix path separators to Windows (/ to \) on all filenames, e.g. those specified in configuration files
  • (Windows) Added support for Unicode filenames when creating and changing directories, may fix restoring files with unicode characters in their names
  • (Windows) Hopefully fixed the inaccurate sleep problem after backup errors, which might cause the daemon to wait much longer than expected before retrying, and use too much CPU while doing so.
  • Rewrote upload decision logic (whether or not to upload a given file), should be easier to read and debug and implement same semantics
  • (Windows) Fixed restoring to paths with Unix path separators (for unit tests)
  • Added a new bbackupctl command to wait for the end of the next sync (useful for unit tests)
  • Fixed spelling errors
  • Cleaned up bbackupctl option handling code to make it easier to extend
  • (Windows) Changed permissions requested in openfile() to better match expectations, should fix backing up read-only files and filesystems
  • (Windows) Fixed buffering in WinNamedPipeStream when more data is in the pipe than will fit into the supplied buffer
  • (Windows) Fixed minor memory leaks in bbackupd (cosmetic)
  • (Windows) Fixed infinite loop with 100% CPU usage when a read error occurs on the named pipe
  • (Windows) Improved handling of locked files during compare
  • Disabled informational messages in bbackupctl when running in quiet mode
  • Merged changed from trunk (nothing significant, I think)
  • (Windows) Fixed restoring and comparing file attributes, creation and modification times
  • (Windows) Fixed matching in exclude lists to be case insensitive

Build 568

Released on 2006/05/17. Download here.

Changes since the last release (564):

  • Fixed regular expression problem in r564 by clean rebuild
  • Fixed service installation with config file path containing spaces (perhaps not completely fixed until build 716)

Build 564

Do not use this build. Regular expression support is broken.

Released on 2006/05/05. Download here.

Changes since the last release (538):

  • Fixed potential encoding problems when displaying filenames during compare
  • Fixed wrong path reported on some compare errors

Build 538

Released on 2006/03/05. Download here.

Changes since the last release (511):

  • Fixed failure to to delete StoreObjectInfoFile

Build 511

Released on 2006/02/25. Download here.

Changes since the last release (473):

  • Fixed timestamp listing in bbackupquery

Build 473 (RC3)

Released on 2006/02/18. Download here.

Changes since the last release (462):

  • None known, except the build name

Others

All releases may be found here. Please check the known bugs page, and the Subversion logs for the release files, to determine what has changed.