| 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. |