Skip to main content.

TimeSync Versions

0.3 to 0.4 First public release
0.4 to 0.5 Added tracing and redirection of messages to different log device. Fixed problem with adjust that caused the previous time to be restored. This seems to be a 'feature' of NT: if time adjustment is disabled NT seems to get the old time from somewhere (presumably the HW clock) and restore it once an hour. This defeated the synchronization performed by TimeSync.
0.5 to 0.6 TimeSync occasionally crashed in the kernel DLL when converting Unicode to 8-bit characters. I have not been able to ascertain the reason for this and hence I have recoded that part. Also removed a trace output with the remote time after synchronization.
0.6 to 1.0 Major changes were made in this release. Recoded in C++. Made often used parameters the default. /at=0:0:0 is now the default as most users want the machine to synchronize at startup. /period=8:0:0 is the default rather than 24 hours. /install starts the service and /remove stops the service before deleting it.Adjustment improved to eliminate 'saw-tooth' deviation. Earlier, if adjust was specified with /immediate and Control-C was pressed adjustment continued till the machine was rebooted; this has been changed so that adjustment is restored to the prevailing state. C++ exceptions are used to handle error conditions. Multiple messages are sent to each time source. Multiple time sources may be specified.
1.0 to 1.1 Fault-tolerance features added (/select control argument). If log device is specified as Console, the service opens a console window. Relative start time can be specified by prepending a "+" to the time in the /at control argument.If installed with a configuration file, it is re-read during subsequent start-ups. To re-install TimeSync, one does not have to first deinstall it (with /remove): if it is already installed an implicit remove is performed followed by install.
1.1 to 1.2 Got bitten by an end-of-leap-year bug. On the last day of a leap year the calculation for day count got messed up by 1, which caused an integer overflow and...nah! you wouldn't want to hear the gory details.
1.2 to 1.3 There were NT machines where NTP requests caused TimeSync to crash when the replies took an inordinate amount of time. The kernel caused a recursive exception. I now use the timeout feature of sockets instead of a monitoring thread.
1.3 to 1.4 UDP time port added (/udp_machine control argument), URL for specifying parameter files (/url control argument), ignore network delay and clock deviation (this was done due to popular demand). The working set is trimmed when TimeSync is inactive and hence it should not be using up memory unnecessarily. Fixed a bug that resulted in loss of precision when manipulating 32-bit millisecond counter. The end result was that if the time deviation was more than 49 days (an unlikely scenario but a bug, nonetheless) it lost the most significant bits and the counter became a small number. This showed when Y2K tests were being run. Thank god for that!
1.4 to 1.5 Quite a few complained that version 1.4 required WinInet.DLL even when the features offered by it was not used. Due to the implicit linking of that DLL, TimeSync would not load if that DLL was not present. I have changed it so that the DLL is loaded dynamically only if the /URL control argument is used. IE 3.x users complained that there were error messages about cache corruption of Internet files. This was an error in the version of WinInet that came with IE 3.x.
1.5 to 1.6 NTP broadcasts were not handled correctly. This has been fixed. NTP timeout has been increased to 2 minutes from 1 minute. The /status command line argument has been added. In immediate mode TimeSync displays a message while adjusting the clock so that users do not panic thinking that TimeSync is hanging.
1.6 to 1.7 Bugs fixed: race condition removed that caused a registry error during installation. Adjustment is more accurate making 1 millisecond deviation a reality. High-performance timer used instead of Windows timer to measure network delay (accuracy of +-0.5 milliseconds instead of +-10). Good adjustment values are stored in the registry so that it does not have to be recalculated on start-up. TCP time server added.