windows-updates-20050904
[openafs.git] / doc / txt / winnotes / afs-changes-since-1.2.txt
index 15b71c5..9ea852a 100644 (file)
+Since 1.4.0 rc2: 1.4.0 rc3 released (4 Sep 2005)
+
+ * add support for '/' instead of '\' in pioctl() calls
+
+ * Apply AFS Client Admins group protect to AFS Shell Extension
+
+ * Add support for \\afs\<name> to most AFS Shell Extension 
+   commands except the symlink methods. 
+
+ * when installing the Microsoft Loopback Adapter, enable
+   MS Client for Networks and prevent an install failure 
+   by not calling CoInitialize twice in the same thread.
+
+ * reload cell vldb values from the CellServDB every two
+   hours in case it changes
+
+ * When updating cell information from DNS, be sure to set 
+   a new timeout.
+
+ * Add support to allow use of \\AFS\<foo> where <foo> is 
+   either a mount point or symlink.   As <foo> is normally 
+   treated as a share name, we transform it into \\AFS\all\<foo> 
+   for processing.
+
+ * Init 'code' to prevent false errors when integrated logon 
+   is disabled and the service is not running
+
+Since 1.4.0 rc1: 1.4.0 rc2 released (28 Aug 2005)
+
+ * Removed trace log messages that were hampering performance.
+
+ * Fixed a deadlock that was being triggered by editing Word 
+   documents stored within AFS with WinWord 2003.
+
+ * Bit 3 of the TraceOption registry value is now used to set the
+   default for "fs trace" in the non-Debug builds.  The new default
+   is off for release builds and on for debug builds.
+
+ * Bit 2 of the TraceOption registry value can be used to turn on
+   real-time output of debug log entries to the Windows Debug
+   Output monitor interface.  This data can be viewed with tools
+   such as Sysinternal's DbgView.
+
+New development series 1.5.0 begun (17 Aug 2005)
+
+Since 1.3.87: 1.4.0 rc1 released (17 Aug 2005)
+ * Byte-range locking as described in cm_vnodeops.c has been implemented.
+
+ * When the cache manager reports ALLBUSY or ALLOFFLINE for
+   a resource we should not be returning status codes such
+   as Network Busy or Remote Host Down because these errors
+   will imply that the AFS Client Service is Busy or Down
+   and that is simply not the case.   Instead we will return
+   Bad Network Path as the path is temporarily not available.
+
+   Instead of returning Sharing Paused when there is a
+   timeout error, return Timeout.  Once again, the AFS Client
+   Service is not paused.
+
+ * afscreds.exe would display an Obtain Creds dialog when
+   the expired credentials reminder was triggered even 
+   if there was no network path to the KDC.  This is prevented
+   by adding KDC probe logic to the reminder thread.  
+
+ * afscreds.exe would display expired tokens no differently
+   than unexpired ones.  This would make it difficult for the
+   user to distiguish when the tokens were expired.  For the 
+   English build added a new resource string "(expired) that
+   is displayed instead of the expiration time. 
+
+Since 1.3.86:
+ * "fs wscell" when executed in freelance mode will return the
+   name of the cell configured in the registry.  The root.afs
+   volume is not loaded from this cell, but it is used for the
+   default for aklog and integrated login.
+
+ * "fs mkmount, fs rmmount, symlink make, symlink remove" will
+   no longer work on \\AFS\all when freelance is being used 
+   unless the user is a member of the "AFS Client Admins" Windows
+   Security group.
+
+ * some more checks performed during persistent cache validation.
+
+Since 1.3.85:
+ * Optimize calls to cm_CheckServer from cm_Analyze.  Only check
+   down servers for the current cell not all cells.
+
+ * If the scache LRU list becomes corrupted, the AFS Client Service
+   might enter an infinite loop at startup.   Detect the corruption
+   and discard the cache contents in this case.
+
+ * Fixed the Explorer Shell's remove mountpoint functionality.
+
+ * Fixed a deadlock caused by the holder of cm_aclLock attempting to 
+   obtain a mutex lock on a cm_scache_t object whose lock is held by
+   a thread attempting to obtain the cm_aclLock.
+
+Since 1.3.84:
+ * Really fixed DNS AFSDB queries to ensure that "csail" cannot be
+   misinterpretted as "csail.mit.edu" when the resolver 
+   is configured to append ".mit.edu" to failed DNS queries.
+
+ * Added a new registry key, "LogoffPreserveTokens" (see registry.txt),
+   that can be used to force the preservation of user tokens upon logout.
+
+ * Update the NSIS install scripts to use NSIS 2.07.   This release adds 
+   recommended installation categories: AFS Client, AFS Administrator,
+   AFS Server, AFS Development Kit.  Each category includes a different 
+   default subset of the OpenAFS components.
+
+   The OpenAFS logo is now associated with the NSIS uninstall entry
+   in the Add/Remove Programs control panel.
+
+ * The user name associated with AFS tokens when obtained with
+   integrated login, the afs systray tool, or aklog will always
+   include the full Kerberos 5 user principal name regardless of 
+   whether or not the cell is local to the realm.
+
+ * Eric William's IFS redirector has been checked onto the CVS head.
+   This code is experimental at the current time and is not being 
+   incorporated into the 1-4 branch releases.  Instructions for 
+   building from sources are found in the top-level README-NT file.
+
+ * Modify integrated login so that it does not enter an infinite
+   loop if the service is not set to auto start.
+
+ * Added asetkey.exe used to set a Kerberos 5 key for use by the
+   AFS server daemons
+
+ * Added uninstall.exe to Wix installation
+
+ * More modifications to algorithms used to wake sleeping threads.
+
+Since 1.3.83:
+
+ * Changes to the algorithms used to wake threads when they are
+   put to sleep because of conflicts over buffer operations.
+
+Since 1.3.82:
+ * The OpenAFS integrated logon obtains Kerberos 5 tickets as part of 
+   the process of producing AFS tokens.  The tokens are stored within
+   the AFS Client Service but the Kerberos 5 tickets have been discarded.
+   New functionality has been added to temporarily copy the tickets to
+   a file ccache during the short window between the NPLogonNotify and
+   WinLogon Logon Event.  The Logon Event handler starts a process as
+   user, afscpcc.exe, that copies the tickets into the default ccache.
+   The file ccache is then destroyed by the event handler.
+
+ * During synchronization operations on stat cache entries, if threads
+   are forced to sleep it was possible that the threads would not be
+   woken under heavy load.
+
+ * Enforce the delete on close flag specified by the NTCreateX()
+   operation.
+
+ * A race condition in the rx library was fixed that resulted in 
+   a deadlock in rx_NewCall when the RX_CONN_MAKECALL_WAITING flag
+   was cleared when threads were still waiting to use the 
+   connection.   Also, fixed a potential case in which the 
+   connection could be destroyed while threads were waiting to use it.
+
+ * The DNLC freelist has been seen to become corrupted with still 
+   active entries being stored on the freelist.  Changes were made
+   to perform a better job of cleaning entries before placing them
+   onto the freelist; marking them with the correct magic value when
+   purging the list; and allowing the list to be purged on startup
+   if the cache validation fails.
+
+ * Windows Crash Reporting does not get triggered for afsd_service.exe
+   because it provides its own top level exception handler.  This patch 
+   places an explicit call to ReportCrash() on platforms which support 
+   it.  (XP and above.)
+
+   If you configure Crash Reporting via AD Policy to capture crash
+   reports within the domain, then you will receive this output.
+
+ * Generate MiniDumps independent of the Windows Crash Reporting.
+   (a) If an exception occurs,a minidump will be generated at the path
+       %TEMP%\afsd.dmp. The type of minidump defaults to Normal but 
+       can be set to any other type via use of the
+       registry.      
+
+       [HKLM\SOFTWARE\OpenAFS\Client]  MiniDumpType (DWORD)
+
+   (b) MiniDumps can be generated at any time using the "fs minidump"
+       command.   This allows you to generate a minidump without 
+       stopping the process or even requiring the use of a debugger
+       on the system.
+
+  * an RX connection which reports bad ticket now treats it the same way
+    the expired ticket is treated.   The ticket is removed from the 
+    connection and a new anonymous connection is established.
+
+  * fs memdump now requires that the caller be in the AFS Client Admins
+    group
+
+  * additional debugging information is provided in cm_Analyze when the
+    error code is ignored.
+
+  * Fix a regression introduced into the pioctl() client code which
+    will cause a crash in winlogon.exe, explorer.exe and fs.exe if
+    MIT KFW is not installed. (1.3.82a)
+
+  * Remove AFS Gateway option from OpenAFS Control Panel (1.3.82a)
+
+Since 1.3.81:
+  * Fix a race condition in cm_EndCallbackGrantingCall() that 
+    could leave 'nrevp' pointing to freed memory.  In the process,
+    optimize the processing to ensure that the applications monitoring
+    the status of the stat cache entry are only notified at most 
+    once.
+
+  * Conditionalize access to the Explorer Shell AFS->Mount Point
+    ->Remove menu item.  Disable the item if the selected item(s)
+    are not mount points.
+
+  * Activate AFS RPC (RX) Free Packet Queues stored in Thread
+    Local Storage.  This eliminates thread contention on the
+    global RX free packet queue.  This should improve performance
+    on multi-CPU systems.
+
+  * Fix the IP address filtering code to properly load/unload
+    the IPHelper DLL so that Windows XP/2003 and beyond systems
+    do not have to manually probe the registry.
+
+  * CleanupACLEnt() was not being called consistently with 
+    the cm_scache_t object referred to by the back pointer
+    mutex locked. This could in very rare conditions lead to
+    an invalid memory access.
+
+  * Added a script command to the msi installer "afs_replace"
+    which can be used to replace one version of OpenAFS with
+    another without requiring an uninstall and reinstall if
+    the installed msi is no longer in its original location.
+
+  * Apparently the problem with multi-domain forests with cross-
+    realm trusts to non-Windows realms was not entirely solved.
+    The authentication to the AFS SMB service failed because 
+    the wrong name was being used.  Using ASU as an example,
+    the authentication was being performed with the name
+    "QAAD\user" (an account in the forest root) and not 
+    "user@ASU.EDU (the MIT Kerberos principal used to login with)
+
+    The solution was to add an additional dependency on KFW
+    in order or to be able to easily obtain the client principal 
+    name stored in the MSLSA ccache TGT.  This information is 
+    used in two locations:  
+
+    - the pioctl() function 
+
+    - a new WinLogon Event Handler for the "logon" event.  
+
+    The pioctl function will now be able to use the correct
+    name when calling WNetAddConnection2() and the "logon"
+    event handler will now be able to call WNetAddConnection2().
+    The hope is that the "logon" event handler will be called 
+    before the profile is loaded but I have not guarrantee
+    that will happen. 
+
+Since 1.3.80:
+  * Fixed a locking error in cm_TryBulkStat() which had the
+    potential of deadlocking the system for the length of time
+    it takes to perform a bulk status fetch operation.
+
+  * Replaced time conversion code (UnixTime <-> FILETIME) to 
+    be completely arithmetic instead of relying on a bizarre
+    algorithm involving a variety of C RTL time functions.
+    This has the side effect that UnixTime and FILETIME which
+    are both stored in UTC are interpretted as UTC throughout
+    the year.  Windows will apply the same localization to AFS
+    as it does to NTFS.  Applications which rely on the ability
+    to sync files between the two file systems will no longer
+    see the timestamps of files in AFS change an hour relative
+    to the files stored in NTFS or Windows based backup devices.
+
+  * Fixed a invalid memory access under a bizarre circumstance.
+    Windows will allow a physical mass media device to be 
+    installed via Plug N Play to the system and will assign it
+    the lowest available drive letter.  This is true even if the
+    drive letter is currently assigned in the user session to
+    a network device via NET USE (or its equivalent.)  When this
+    happens, queries sent to the CIFS server will contain invalid
+    data.  This invalid data was not being caught by the AFS 
+    Client Service and was resulting in a crash when Freelance
+    mode was in use.  
+
+  * Fixed a reference count error when registering callbacks
+    on a stat cache object if the callback was already registered
+
+  * Add a case to cm_Analyze() in order to handle the case where
+    cm_GetConnByMServers() returns CM_ERROR_NOSUCHVOLUME because
+    the server list for the volume is empty.  In this case, force
+    an update of the volume info and retry.
+
+  * Insert a missing cm_EndCallbackGrantingCall() which could
+    result in threads waiting for a callback to complete to never
+    be woken up.
+
+  * In the persistent cache, there is a maximum number of volume
+    entries.  Allow volume entries to be reused if the maximum
+    number have been allocated and their reference count is zero.
+
+  * If we already have a dead virtual connection object, don't 
+    ignore the fact that additional dead vc objects must be taken
+    care of.
+
+  * Removed a deadlock condition introduced in the summer of 2004.
+    Do not hold mx locks around calls to RX functions including
+    rx_NewCall().  That is what reference counts on the rx_connection
+    object are for.
+
+  * Fixed an initialization error in afslogon.dll which could
+    result in random behavior including a failure to terminate
+    the NPLogon function. (1.3.80b)
+
+  * Fixed an error preventing the use of SMB authentication
+    on Windows 2000.  (1.3.80a)
+
+Since 1.3.77:
+  * Updated CellServDB to Public CellServDB 16 Mar 2005
+
+  * Fixed DNS AFSDB queries to ensure that "csail" cannot be
+    misinterpretted as "csail.mit.edu" when the resolver 
+    is configured to append ".mit.edu" to failed DNS queries.
+
+  * Fixed another case in which the client would replace connections
+    to the host when it was not necessary.  In this case the 
+    situation would occur if cryptall was on and the connections
+    were unauthenticated due to lack of an appropriate token.
+
+  * OpenAFS for Windows has failed to work at sites which are 
+    utilizing a cross-realm trust between an MIT/Heimdal realm
+    and a multi-domain Windows forest when the workstation being
+    accessed is not located in the root domain.  This is caused 
+    by a bug in the workstation which was triggered after the 
+    introduction of Windows 2003 Server.  When the bug is triggered,
+    the workstation attempts to authenticate users to afsd_service.exe
+    by contacting the Domain Controller instead of using the 
+    LSA loopback authentication mechanism.
+
+    One of the reasons this bug occurs is because the workstation    
+    does not have a reliable way of knowing that the service whose
+    netbios name is "AFS" is located on the workstation.  This will
+    be fixed starting in Longhorn Beta 1 by Microsoft.  The 
+    "BackConnectionHostNames" registry value will be used to 
+    indicate that the authentications to that service name should
+    be performed using the loopback authentication mechanism.
+
+    In the meantime, when Logon Caching is enabled, we can force
+    afsd_service.exe to authenticate using the logon cache before
+    contacting the Domain Controller.  This will work with both
+    password and smart card based logons.  
+
+  * The allDown logic in cm_ConnByMServers() was wrong.  The allDown
+    flag should not be cleared if a volume's server reference is 
+    marked as "offline".  In the case where all of the volume's 
+    servers are either "down" or the volumes are "offline", we want
+    cm_Analyze() to process the condition as CM_ERROR_ALLOFFLINE
+    instead of as CM_ERROR_TIMEDOUT.  In fact, CM_ERROR_TIMEDOUT
+    should never occur in practice.
+
+    In the case of CM_ERROR_ALLOFFLINE, cm_Analyze() will sleep for
+    5 seconds, clear the server down and volume busy flags, and 
+    then force an update from the VLDB.  This allows the client to 
+    update the location of a volume if the reason for it being 
+    marked offline is because it is being moved.  Calls to 
+    cm_ConnByMServers() will be retried either until success or
+    the RDRtimeout period is reached.
+
+  * Correct the Power Management code behavior in response to 
+    Standby, Suspend, and Shutdown events.  Instead of flushing the
+    buffers associated with the mounted SMB submounts, simply write
+    all buffers which are marked dirty.
+
+  * Added support for "TheseCells" to afslogon.dll.  "TheseCells"
+    provides a list of cells other than the default cell for which
+    tokens should be obtained using the default Kerberos principal.
+    This functionality is logon domain specific and is only available
+    when using KFW for authentication.
+
+  * Fixed FindNext Invalid Handle error caused by over agressive 
+    attempts at garbage collecting dirSearch entries when the 
+    dirSearch ID wraps from the maximum value to 1.
+
+  * Add support for registry defined server preferences for VLDB and 
+    File servers.  See registry.txt for details.
+
+  * Increased default cache size to 96MB and default number of cache
+    entries to 10,000.
+
+  * Fixed refCount leaks related to directory lookups and pioctl calls.
+
+  * Callbacks revoked during a race condition with an attempt to 
+    obtain the same callback no longer result in an inaccessible
+    stat cache entry.
+
+  * New command line tool:
+
+        afsdacl : Set or reset the DACL to allow starting or stopping
+             the afsd service by any ordinary user.
+
+        Usage : afsdacl [-set | -reset] [-show]
+              -set   : Sets the DACL
+              -reset : Reset the DACL
+              -show  : Show current DACL (SDSF)
+
+  * IP addresses are no longer queried once at startup.  Instead IP
+    addresses are obtained as needed.   Loopback adapter addresses are
+    no longer published to the server.
+
+  * Pay attention to the MIT KFW registry configuration for automatic
+    importation of MSLSA credentials. (SOFTWARE\MIT\Leash32,MsLsaImport)
+
+  * Fix (once again) case-sensitive comparisons which was apparently 
+    broken in 1.3.72.
+
+  * Activate support for vos listvol -format
+
+  * Population of the "AFS Client Admins" group failed on non-English
+    versions of Windows because the name of the "Administrators" group
+    is localized.  Now we lookup the name of the group by using the
+    Administrators Group Alias Relative ID.
+
+  * Multiple cell token acquisition within afscreds.exe was broken in the 
+    case of Kerberos 5 cross realm authentication.  Instead of contacting
+    the KDC associated with the cell's realm, afscreds would obtain a 
+    token from the KDC of the user's realm.  This would result in
+    "invalid kvno errors" while authenticating to the AFS servers.  
+    Unauthenticated access would work.  The symptoms would vary based upon
+    whether or not the VLDB servers had been contacted using unauthenticated
+    connections prior to the user obtaining tokens.
+
+  * The list of ACL entries was becoming corrupted.  It appears as if 
+    an ACL when it expires was not being appropriately cleaned up.  In
+    fact, it was left in the list of ACLs associated with the scache 
+    entry.
+
+  * Changed the default @sys name list to "x86_win32 i386_w2k i386_nt40"
+    for 32-bit x86 systems.  The default for itanium will be "ia64_win64"
+    and "amd64_win64" for amd 64-bit processors.
+
+  * When executing executables, Windows provides a mechanisms by which
+    the normal search for DLLs can be bypassed.  If a file foo.exe is
+    being executed and there exists a file or directory "foo.exe.local" 
+    (the contents are ignored if a file), then Windows will search for
+    DLLs first in the "foo.exe.local" directory and second in the 
+    directory in which the "foo.exe" file is located.  
+
+    Previous releases of OAFW would improperly return 
+    STATUS_NOT_A_DIRECTORY instead of the expected 
+    STATUS_OBJECT_PATH_NOT_FOUND.  This would cause the Windows SMB client
+    to terminate the search for the DLL causing the execution of the 
+    application to fail.
+
+  * Rework the reference counting of smb_vc_t objects.  The references  
+    stored in the waiting locks were not counted.  This could result in
+    an assertion if the reference count drops to zero.
+
+  * "fs wscell" returns "Freelance.Local.Root" for the workstation cell
+    when running in freelance mode.
+
+  * Added support for persistent caching of file contents, stat entries,
+    volume data, cell data, and name lookup data.  When the registry 
+    value, "NonPersistentCaching", is not defined or set to 0 the file 
+    specified by "CachePath" becomes a persistent cache file.   The 
+    size of the cache file is computed at run time.  It has a maximum
+    size of approximately 1.2GB.  The contents of the file will be 
+    validated according to the rules specified by the "ValidateCache"
+    registry value.  
+
+  * Added support for UUIDs.  UUIDs are kept for as long as the 
+    cache file is intact.
+
+  * Added cmdebug.exe and support cache manager debugging callback 
+    interfaces in afsd_service.exe.
+
+    Usage: cmdebug -servers <server machine> [-port <IP port>] [-long] 
+                   [-addrs] [-cache] [-help]
+    Where: -long   print all info
+           -addrs  print only host interfaces
+           -cache  print only cache configuration
+
+  * Symlinks to \\AFS\[all\]... will now be treated the same as 
+    symlinks to /afs/....   However, please use /afs/... as otherwise
+    the symlinks won't work on Unix.
+  
+  * Correct a problem with local CellID allocation for cells whose 
+    server list is obtained via DNS instead of a CellServDB file.  If
+    the DNS information expires the CellID assigned to the entry will
+    be changed.  This causes all of the cm_scache_t objects which refer
+    to the old cellID number to become useless.  Attempts to access 
+    files or directories with cm_scache_t objects using the old cellID
+    will fail since the server list cannot be obtained.
+
+  * Correct deadlock condition in cm_EndCallbackGrantingCall which can
+    be triggered if the volume referenced by the cm_scache_t object is
+    offline.
+
+  * The AFS Service needs to respond to SERVICE_ACCEPT_SHUTDOWN messages
+    in addition to SERVICE_ACCEPT_STOP.
+
+  * Move RPC shutdown until after the SMB and RX shutdown procedures 
+    complete.  Block until RPC shutdown is complete.
+
+  * Modify afslogon.dll (integrated logon) to wait for service if its
+    state is START_PENDING.  If the timeout period occurs, reset to 
+    the retry interval and not the sleep interval.
+
+  * When renewing the server list for a cell obtained via DNS AFSDB
+    records, the cm_cell_t entry must be removed from the list of all 
+    cells.  Otherwise, the list of cells will be corrupted.
+  * In the dcache and scache modules, use the cm_scache_t dataVersion
+    instead of the cm_fakeDirVersion.  
+
+  * Synchronize fs.c with the unix version.
+
+  * The variable used to determine whether a file or virtual memory
+    mapped cache is used was not properly initialized to a default
+    value. If the registry setting "NonPersistentCaching" was not
+    set, the choice would be random.   Properly initialized to be
+    "file".
+
+  * The memory mapped view was never unmapped before closing the file
+    at service shutdown.  This is now properly cleaned up.
+
+  * Default location of Cache file is now %TEMP%\AFSCache
+
+Since 1.3.76:
+
+  * A bug affecting new installations of 1.3.75/76 would result in
+    the creating of incorrect mountpoints in the freelance root.afs 
+    volume for the default cell.
+
+    If "fs \\afs\all\<cellname>" lists a volume name of "root" instead
+    of "root.cell", you have been affected by the bug.  To correct the
+    problem, execute the following commands:
+
+          fs rmmount \\afs\all\<cellname>
+          fs rmmount \\afs\all\.<cellname>
+        
+          fs mkmount \\afs\all\<cellname> root.cell <cellname>
+          fs mkmount \\afs\all\.<cellname> root.cell <cellname> -rw
+
+Since 1.3.75:
+
+  * A bug has been fixed in the auto-generation of Freelance root.afs
+    symlinks which produced random entries in the \\AFS\all directory.
+
+  * Support has been added for multi-homed servers
+
+Since 1.3.74:
+  * Added a new registry value, "StoreAnsiFilenames", which can be used
+    to force the use of ANSI character sets instead of OEM Code Pages.
+    This feature is useful when users require the ability to create 
+    filenames with 8-bit characters and need to access the files from
+    both Latin-1 based Unix systems as well as from Windows.
+
+    Activation of this feature will prevent access to files stored with
+    8-bit OEM characters.
+
+  * Shutdown all SMB threads in a synchronized manner when stopping the 
+    service.
+  * There is currently a maximum cache size of 1.3GB.  The limit is imposed
+    by the largest contiguous block of unused memory within the 2GB process
+    space which can be assigned to the memory mapped file.  Unfortunately,
+    when the executable digital signature verification code is activated
+    Windows sees fit to further segment the process memory which in turn
+    reduces the size of the maximum cache file to less then 800MB.  If
+    larger cache sizes are desired, a new registry value should be set:
+
+      HKLM\SOFTWARE\OpenAFS\Client (DWORD) "VerifyServiceSignature" = 0x0
+
+    Setting this value will disable the runtime verification of digital
+    signatures on afsd_service.exe and the afs dlls which it loads.  It
+    will not disable the the version number check on those same files.
+    The signature verification is not a security messure and is only meant
+    to enhance the ability to afsd_service.exe to detect potential
+    destablizing mixtures of DLLs from incompatible distributions.
+
+    Added code to auto-disable the signature verification check if 
+    the desired cache size is greater then 700MB.
+
+  * Windows' WinTrustVerify(WIN_SPUB_ACTION_PUBLISHED_SOFTWARE) is 
+    used to verify the validity of the afsd_service.exe binary 
+    as well as each of the AFS DLLs loaded by the service.  Not only
+    must the digital signature be valid but the signatures of the 
+    DLL must be signed by the same entity as the service.
+
+  * Implement new functions: cm_freelanceMountPointExists and
+    cm_freelanceSymlinkExists.  Use them along with other validity
+    checks in cm_freelanceAddMount and cm_freelanceAddSymlink to
+    ensure that name collisions do not occur and that empty strings
+    are not valid file names.
+
+    A symlink may not have a name which would resolve to a valid 
+    cell name.  Doing so would prevent access to the cell.
+
+  * Add missing cm_HoldSCacheNoLock call to Freelance mount point
+    re-initialization code.  The reference counts of the fake root.afs
+    volume scache object(s) would become invalid when the mount point
+    or symlink lists were altered.
+
+  * Add registry entries to provide mappings from the afsdsbmt.ini
+    to the new locations for applications which count on the use
+    of the old Profile file APIs.  These apps are likely to fail
+    if the user does not have administrator privileges and the 
+    registry is locked down.
+
+  * The afs_config.exe submounts dialog had two errors.  
+    First, attempts to remove entries failed because the registry
+    key was being opened without KEY_WRITE privileges.  
+    Second, when editing a submount entry, changing the name
+    would add a new key and leave the original one in place. 
+    Now the original submount will be removed if its name is 
+    changed.
+
+  * In recent months there have been several incidents in which
+    users have experienced problems starting or accessing 
+    afsd_service.exe and after significant effort has been spent
+    it has turned out that they have two versions of AFS on the
+    machine or an inconsistent set of DLLs.  
+
+    Code has now been added to afsd_service.exe which will walk
+    the list of modules loaded by afsd_service.exe and validate
+    that the version of the AFS DLLs matches the version of the
+    afsd_service.exe executable.  If they do not match the service
+    will not start.  
+
+  * When Freelance mode is enabled and there is no registry
+    key HKLM\SOFTWARE\OpenAFS\Client\Freelance, afsd_service.exe
+    will attempt to import the afs_freelance.ini file contents.
+    If the file does not exist, it was creating a dummy file
+    with a r/o and r/w entry for the default cell and then
+    importing those values.
+
+    This process has been changed.  The temporary file is no
+    longer created.   Also, both the OpenAFS Client install
+    directory as well as %WINDIR% are checked for previous
+    afs_freelance.ini files.
+
+  * Added support for VL_GetEntryByNameN().  Still need to add
+    support for VL_GetEntryByNameU() for multi-homed support.
+
+  * Fix a deadlock situation in afscreds.exe when canceling an
+    auto-generated Obtain Tokens dialog
+
+Since 1.3.72/73:
+  * Fix the locking of objects during Directory Searches in the
+    SMB/CIFS server.  The failure to properly lock the reference 
+    counts was resulting in the premature freeing of smb_dirSearch_t 
+    objects while they were still in use by the SMB/CIFS client.
+    This does not solve the "Invalid Handle" problem.
+
+  * Fix Find Cell By Name pioctl call to return a valid cell
+    name for the Freelance fake root.afs volume.  
+    "Freelance.Local.Root".
+
+  * Fix the Explorer Shell Extension Symlinks->Add operation.
+    The dialog template was missing and the link destination
+    string was too short.
+
+  * Add support for symlinks to Freelance root.afs volume
+    Stored at HKLM\SOFTWARE\OpenAFS\Client\Freelance\Symlinks
+       <number>  =  "<linkname>:<relative-path>."
+    Use symlink.exe to create, list, or remove
+
+  * Remove the fallback to the use of KFW's KRB4 library when obtaining
+    tokens.  We never obtain KRB4 tickets.
+
+  * Fix AFS Client Configuration Control Panel to support new SysName
+    protocol.
+
+  * Fix a bug in afsd_service.exe which could result in the SysName
+    not being read from the registry.
+
+Since 1.3.71:
+  * Add code to block the issuance of AFS tokens by aklog.exe or
+    afscreds.exe when the Kerberos 5 principal name contains a dot.
+
+  * Modify the IsAdmin() function to always treat the local SYSTEM
+    account as an AFS client administrator.  Affects fs.exe and 
+    afs_config.exe.
+
+  * Modify the internal handling of Quota Exceeded errors
+
+  * Upgrade all reference count fields in the Windows cache manager
+    and the osi library to use unsigned long instead of signed short.
+    A similar fix has been applied to the afs rpc (rx) library.
+
+  * fix the Windows cache manager to prevent it from replacing the 
+    rx_connection object associated with the cm_conn_t object on each
+    and every operation if "fs crypt" was set.  This explains the 
+    dramatic performance difference when crypt is used vs clear.
+    The problem: 'cryptall', a boolean flag indicating whether or not 
+    "fs crypt" is set, was being compared to the rx_connection 
+    cryptlevel which is either rxkad_clear:0 or rxkad_crypt:2.
+    1 != 2 and therefore the rx_connection was always destroyed 
+    and replaced on each and every operation.
+
+    Lock the cm_conn_t object around every call to RXAFS_xxxx functions.
+    It is not safe for the cm_conn_t object to not be locked because
+    rx_DestroyConnection might be called from another thread if:
+        - the user's tokens have changed or expired
+        - the crypt mode has changed
+
+    This fix appears to have also taken care of the problems associated
+    with Overlapped Writes resulting in Delayed Write errors.
+
+  * fix NSIS installer's AdminGroup.exe to properly create and
+    remove groups when given -create or -remove.  The string comparison
+    test was wrong.
+
+  * fs sysname now accepts a list of sysname values 
+
+  * added a new registry value HKLM\SOFTWARE\OpenAFS\Client "IoctlDebug"
+    DWORD which when set to a non-zero value will cause error message
+    text to be output to stderr from the pioctl() routine.  Useful in 
+    debugging failures of fs.exe, tokens.exe, etc.
+
+  * added a test to the power management code to only perform a 
+    flush operation if there is at least one network adapter which
+    is not a loopback adapter.
+
+  * Fix bug in loading of registry value HKLM\SOFTWARE\OpenAFS\Client
+    "EnableKFW".  This value will not be read if the key
+    HKCU\SOFTWARE\OpenAFS\Client exists; even if the "EnableKFW" 
+    value under that key does not.
+
+  * provide mechanisms to force the use of krb524d for Kerberos 5
+    ticket to AFS token conversion.  For afslogon.dll and afscreds.exe
+    there is a new registry value "Use524" and for aklog.exe a new
+    command line parameter "-m".
+
+  * Fix the pattern matching algorithm to properly match patterns
+    ending with a '*'.
+
+  * smb_ReceiveCoreRename() was factored to produce smb_Rename()
+    which is used by both the original function and the new
+    smb_ReceiveNTRename().  smb_ReceiveNTRename() supports the
+    creation of HardLinks in addition to Renaming.  smb_Link() 
+    is a new function which creates HardLinks via cm_Link().
+    cm_Link() is a new vnodeops function which creates links
+    using RXAFS_Link().
+
+    smb_ReceiveNTRename() does not support the File Copy and 
+    Move Cluster Information operations described in its interface.
+    ReceiveNTRename is under documented in CIFS-TR-1p00_FINAL.pdf.
+
+  * When opening files via symlinks, we should follow the symlinks
+    until we reach the actual file stat cache entry.  The stat cache
+    entry of the file should then be stored in the FID instead of
+    stat scache entry of the symlink.
+
+  * return bad operation errors for all unimplemented functions
+    even if we do not know the functions exist.
+
+  * Log bad packets and unknown operation packets to the trace log
+
+  * Map CM_ERROR_BADOP to STATUS_NOT_SUPPORTED instead of 
+    0xC09820FF
+  
+  * Update list of known CIFS operations to include all those listed
+    in CIFS-TR-1p00_FINAL.pdf.
+
+  * Modify the handling of HKLM\SOFTWARE\OpenAFS\Client\Submounts
+    to support the REG_EXPAND_SZ type.
+
+Since 1.3.70:
+  * A new Windows authorization group "AFS Client Admins" is now 
+    created and populated with the members of the "Administrators"
+    group.  The group is used to determine which accounts on the
+    machine may be used to modify the AFS Client Configuration via
+    the UI and command line tools.  afs_config.exe, fs.exe, 
+
+  * Modify the WinLogon Logoff Event Handler to query NT4 domain
+    controllers for the remote profile path if Active Directory
+    services are not available.
+
+  * Fix aklog.exe to not add the AFS ID to the username
+
+  * PTS registration of new users to foreign cells has been added to 
+     afscreds.exe
+
+  * The cm_Daemon thread is used to perform checks for 
+    down servers, up servers, volumes, callback expirations, 
+    lock maintenance and token expiration.  Due to a gaff in
+    larger integer division the thread never performed any 
+    work.  Instead the current time computation would always
+    be less then the trigger times.  This had an adverse affect
+    on the client's ability to maintain communication with servers,
+    keep volumes up to date, and flush user tokens and acls
+    when they have expired. This was broken when the 1.3 branch
+    was modified to support VC7 which no longer included 
+    largeint.lib
+
+  * An initialization problem with the Freelance code was 
+    detected while fixing the callbackRequest.  The cm_rootSCachep
+    object is obtained during afsd_InitDaemons() but the callback 
+    information is incomplete.  The callback information will not
+    be obtained until cm_MergeStatus is called from within
+    cm_GetCallback.  Unfortunately, cm_SyncOp did not properly 
+    test for the conditions under which the callback information
+    must be obtained.  
+
+  * Reports have been filed indicating that callbacks were
+    being lost.  An examination of the code indicated that the
+    cm_server_t objects were not being properly reference
+    counted by the cm_scache_t and cm_callbackRequest_t objects.
+    In particular, the cm_server_t objects may have been freed
+    from beneath the cm_conn_t objects.
+
+    All of the reference counting is now done via the functions:
+        cm_GetServer
+        cm_GetServerNoLock
+        cm_PutServer
+        cm_PutServerNoLock
+    this improves the ability to track the referrals.  
+
+    Each cm_BeginCallbackGranting Call now allocates a reference
+    to the cm_server_t.  The cm_EndCallbackGrantingCall either
+    frees the reference or transfers it to the cm_scache_t
+    cbServerp field.  These are then appropriately tracked
+    through the cm_Analyze call.
+
+  * Ensure that the dnlc hash table is the same size as the
+    dir name hash table (as per original author's note).
+    Increase the dnlc CM_AFSNCNAMESIZE to a multiple of 8
+    for compatibility with 64-bit systems.
+
+  * fix smb_ApplyV3DirListPatches to properly apply the hidden
+     attribute to dotfiles when the infoLevel < 0x101 and 
+     cm_SyncOp has failed.
+
+  * Fix the Freelance registry initialization code.  There
+    was a possibility that some systems could end up with 
+    garbage in the registry during a clean install.
+
+Since 1.3.66:
+   * file and directory names beginning with "." will now be given the
+     hidden attribute when the volume access is anonymous.  this matches
+     the behavior when the volume access is via an authenticated user.
+
+   * Added a change monitor to the HKLM\SOFTWARE\OpenAFS\Client\Freelance
+     key.  When a change occurs mark the root.afs data as invalid and
+     for it to be reloaded on the next access.  This allows administrators
+     to modify the mount point list without restarting the service.
+     
+     The freelance client used to provide a fake modification time for
+     the root.afs volume data and its mount points of 7/09/2001 14:24 EDT.
+     Added code to extract the last modification time of the Freelance
+     registry key and use that instead.  The time now represents the 
+     most recent mount point change.
+
+   * PTS registration of new users to foreign cells has been added to 
+     aklog.exe
+
+   * Additional Cache Control and Credential Manager options have been
+     added to the WiX installer.  See deployment guide for details.
+
+   * The CachePath setting is now optionally a REG_EXPAND_SZ type
+  
+   * The WiX installer has been upgraded.  Version 2.0.1927.1 is now 
+     required.
+
+   * The loopback installation code may have had a problem updating the
+     %ETC%\HOSTS file which could have resulted in a premature failure.
+     Work around code has been added for the case where the file cannot
+     be deleted.
+
+   * The default max chunksize was increased from 15 (32K) to 17 (128K)
+     because Windows sends 64K blocks when using overlapped writes.
+
+   * The default number of server threads was increased from 4 to 25 to
+     better handle overlapped writes.  
+
+   * The "AfscredsShortcutParams" registry value was not being properly
+     loaded by afscreds.exe.  Therefore, the default value was always being
+     used instead of the value set by the installer.
+
+   * Windows XP provides downgrade attack detection to prevent an attacker
+     from being able to force the use of NTLM simply by disrupting 
+     communication with the KDC.  This attack cannot exist between the 
+     Windows CIFS client and the AFS Client Service.  Therefore, when a
+     downgrade has been detected the afs pioctl library will force the 
+     establishment of a new CIFS connection using NTLM.
+   * A locking error was discovered surrounding all references to volume
+     server lists within the cm_cell.c source file. 
+
+   * The logged into Windows username was incorrect on Terminal Server
+     machines.
+
+   * A new registry value "NonPersistentCaching" was added to the service
+     parameters key.  When set to a non-zero value, the afs cache is stored
+     in the Windows paging file.  There are two limitations to choosing
+     this option: 
+        1. when persistent caching is implemented it won't work with 
+           this flag set since there will be nothing to persist.
+        2. with this flag set the initial paging allocation cannot be
+           changed while the service is running
+
+   * An initialization bug was discovered in aklog.exe which affected users
+     who have a domain name for their afs servers which could not be mapped
+     to a realm
+
+Since 1.3.65:
+   * afs_config.exe now validates cell names against DNS in addition
+     to the CellServDB file.
+
+   * In order to allow the freelance client to connect to a volume with ID 
+     equal to 1 on the default cell we changed the fake root.afs volume ID
+     once again.  This time we choose 0xFFFFFFFF.  In addition, we change
+     the cell ID of the fake root.afs volume from 1 to 0xFFFFFFFF as well.
+     It will now be impossible for a volume ID to match that of another 
+     cell unless the client is connected to 0xFFFFFFFD cells.  That should
+     be enough room for growth.
+
+   * Fix "fs mkmount" command to work with UNC paths and when
+     started from non-AFS drives.  It is now possible to create a mount
+     point in the freelance fake root.afs volume with the command
+
+        fs mkmount \\AFS\all\<directory-name> <volume-name> <cellname>
+
+     For example,
+        
+        fs mkmount \\AFS\all\openafs.org root.cell openafs.org
+        fs mkmount \\AFS\all\.openafs.org root.cell openafs.org -rw
+
+   * The algorithm used to re-attempt access to the servers associated with
+     a volume has been altered to properly address the case in which all 
+     servers have been marked down.  The previous algorithm did not reset
+     the server's down flags so the servers were never actually retried.
+     This caused a problem with active volumes if the network connectivity
+     was lost as could be the case with a network cable removal, wireless
+     drop, or laptop hibernation.  With the fix volume access is restored
+     almost instantenously when network connectivity becomes available.
+
+   * Support for SMB/CIFS browsing has been added to the AFS Client Service
+     SMB server.  It is now possible to use "NET VIEW \\AFS" to obtain a
+     listing of AFS submounts and freelance mount points.  Support for
+     NETSHAREENUM, NETSHAREGETINFO, NETSERVERENUM2, NETSERVERGETINFO
+     significantly enhances the behavior of AFS volumes within the Explorer
+     Shell.  For instance, "AFS" now shows up as server in the Explorer
+     with each submount or freelance mount point visible as a share.
+     The right click menu in each folder now works with full functionality
+     on a consistent basis.
+
+   * The network provider can be configured to have different behavior
+     depending on the domain that the user logs into.  These settings are
+     only relevant when using integrated login.  A domain refers to an
+     Active Directory (AD) domain, a trusted Kerberos (non-AD) realm or the
+     local machine (i.e. local account logins).  The domain name that is
+     used for selecting the domain would be the domain that is passed into
+     the NPLogonNotify function of the network provider. (see registry.txt
+     for details)
+
+   * Added a new registry value [HKCU\SOFTWARE\OpenAFS\Client] 
+     "Authentication Cell" which may be used to specify a default 
+     authentication cell for afscreds.exe which is different from
+     the default cell for the AFS Client Service daemon.
+
+   * Added a Logoff WinLogon Event Notification function to afslogon.dll.
+     afslogon.dll moved to %WINDIR%\System32\.
+     New registry entries added to register the dll for Winlogon events.
+
+     The logoff event will now force a call to ktc_ForgetAllTokens()
+     using the context of the user being logged off as long as the 
+     user's profile is not loaded from within AFS.  If the profile 
+     was loaded from AFS we can't release the tokens since the Logoff
+     event is triggered prior to the profile being written back to 
+     the its source location.  This is now performed in an XP SP2 
+     safe manner.
+
+   * Windows XP SP2 Internet Connection Firewall interoperability
+     has been added.
+
+   * The %WINDIR%\afsdsbmt.ini contains four sections:
+        Submounts, Drive Mappings, Active Maps and CSC Policies.
+     The Submounts and CSC policies are now stored in the registry under
+        [HKLM\SOFTWARE\OpenAFS\Client\Submounts]
+        [HKLM\SOFTWARE\OpenAFS\Client\CSCPolicy]
+     The Drive Mappings and Active Maps are stored in the registry under
+        [HKCU\SOFTWARE\OpenAFS\Client\Mappings]
+        [HKCU\SOFTWARE\OpenAFS\Client\Active Maps]
+
+     There is no automatic migration of this data as it would be impossible
+     to consistently migrate data to user profiles which may not be active
+     when the machine is updated.
+
+   * The %WINDIR%\afs_freelance.ini contains lists of mountpoints for the
+     fake root.afs volume.  For the same reasons as for the cellservdb file,
+     this information should not be in %WINDIR%.  This information is now
+     kept under the registry key
+        [HKLM\SOFTWARE\OpenAFS\Client\Freelance]
+
+     The data from the afs_freelance.ini file will be automatically 
+     migrated to the registry on first execution of afsd_service.exe
+
+   * Keeping the CellServDB file in the location %WINDIR%\afsdcell.ini is 
+     troublesome for several reasons.  One, it is confusing for those who
+     expect the file to be named "CellServDB" instead of "afsdcell.ini".
+     Two, this file is not a Windows Profile formatted file.  Three, 
+     applications should not be reading or writing to %WINDIR%.  It causes
+     problems for Windows Terminal Server.
+
+     The new location of CellServDB will be the OpenAFS Client install 
+     directory which is by default C:\Program Files\OpenAFS\Client and can
+     be determined by querying the registry for 
+     [HKLM\SOFTWARE\TransarcCorporation\AFS Client\CurrentVersion]PathName
+
+     The existing afsdcell.ini will be migrated by the NSIS installer. 
+     The Wix installer must still be updated to do the same.
+
+   * Change NSIS installer to use DNS by default; to remove Integrated Logon
+     High Security mode; and to add Terminal Services compatibility registry
+     entries to allow the OpenAFS tools to find the afsdcell.ini and other
+     configuration files in %WINDIR%.
+  
+   * Add support for authenticated SMB connections.   This will remove
+     the need for high security mode in most situations.  Both NTLM
+     and Extended Security (GSS SPNEGO) modes are supported.  Effectively,
+     only NTLM can be used even though Kerberos is now supported.  The
+     reason is that it is not possible to construct a service principal
+     which is unique to each individual machine.
+
+     SMB Extended Auth does not work on XP SP2 unless one of two registry
+     modifications are made:
+
+     (1) To disable the check for matching host names on loopback connections
+        set this key.  This does not require a reboot:
+
+        [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa]
+            "DisableLoopbackCheck"=dword:00000001
+
+     (2) To add the AFS SMB/CIFS service name to an approved list.  This
+        does require a reboot:
+
+        [HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa\MSV1_0]
+            "BackConnectionHostNames"=multi-sz "AFS" "MACHINE-AFS"
+
+     afsd_service.exe will automatically add the current Netbios Name
+     to the BackConnectionHostNames list and then temporarily disable
+     the loopback check for one cycle of startup/shutdown of the service.
+     We assume most folks do not start/stop without a reboot so this 
+     will be adequate in most cases.
+
+   * Fix security hole in afslogon.dll which allowed passwords to be
+     sent in clear text to the KDC in a misformed principal name.
+
+   * Fix cm_GetCell() to properly handle expired dns entries
+     without crashing
+
+   * If Freelance mode is active and the afs_freelance.ini
+     file does not exist, do not create an empty file.
+     Instead create a file containing ro and rw mountpoints
+     to the default cell using the standard conventions.
+
+   * Modify the Freelance support to handle the ability
+     to create rw mount points in the fake root.afs volume.
+
+   * Changed the RPC mechanism used for token setting from 
+     named pipes to local.  Use of named pipes can be restored
+     by setting the environment variable AFS_RPC_PROTSEQ to
+     "ncacn_np". 
+
+     Named pipes were required when a Windows 9x system was
+     using a NT system in gateway mode which is incompatible
+     with our use of local loopback adapters.
+
+   * In afscreds.exe, if a username of the form user@REALM is
+     specified and no password is specified, do not perform a 
+     kinit operation.  Only perform the aklog functionality.
+
+   * Add a new registry value which allows the number of processors
+     on which afsd_service.exe executes to be restricted.  Valid
+     values are 1..numOfProcessors
+
+       HKLM\SYSTEM\CurrentControlSet\Services\TransarcAfsDaemon\Parameters
+          (DWORD) MaxCPUs 
+
+Since 1.3.64:
+   * A second MSI based installer option is now available.
+
+   * Fixed Kerberos 5 kinit functionality in afscreds.exe to properly
+     request tickets for user/instance@REALM instead of just user@REALM
+
+   * Modify the Power Management Notify routine to wait for the Hard Dead
+     timeout period instead of a fixed 19 seconds.  With the longer timeout
+     periods Hibernation and Standby could never succeed when network 
+     connectivity is not available.
+
+   * The following fs.exe commands are now restricted to Administrator:
+     - checkservers with a non-zero timer value
+     - setcachesize
+     - newcell
+     - sysname with a new sysname list
+     - exportafs 
+     - setcell
+     - setserverprefs
+     - storebehind
+     - setcrypt
+     - cscpolicy
+     - trace
+
+     setting the default sysname for a machine should be done via the
+     registry and not via "fs sysname".
+
+   * NSIS installer adds options to install Debugging Symbols
+     and the Microsoft Loopback Adapter; the user is now also
+     given the ability to select the afscreds.exe startup options.
+
+   * Build system modified to generate symbols for FREE (aka RELEASE)
+     builds as well as CHECKED (aka DEBUG) builds
+
+   * Sites which have a volume ID of 0x20000001 assigned to their
+     root.cell volumes have been experiencing problems with accessing
+     the root.cell volume of their cell when Freelance mode has been
+     active.  This was because 0x20000001 was assigned to the fake
+     root.afs volume created by freelance.  The fake volume id is
+     now set to 0x00000001 to prevent conflicts.
+
+   * The timeout logic in the AFS Client Service has been wrong
+     for sometime.  It is based on two different assumptions.
+     First, the SMB client timeout is a fix value as was the case
+     with OS/2 Lan Manager.  This assumption is incorrect.  The
+     SMB timeout in Windows is a dynamic value computed based upon
+     a fixed minimum timeout to which is added time based upon the
+     size of the request and the performance characteristics of
+     the connection.  Second, it is the responsibility of the 
+     SMB Server to enforce the timeout requirements of the client.
+     This is untrue.  The SMB Server cannot be expected to know
+     the requirements of the client.  More importantly, if the 
+     SMB server uses the SMB client timeout as a value to restrict
+     its behavior as an RX client, the performance characteristics
+     of the local SMB session would be used to prematurely terminate
+     WAN connections with significantly different performance 
+     characteristics.
+
+     The timeout logic has therefore been modified in the following
+     manner:
+      . the Lan Manager Workstation (SMB) Session Timeout is used only
+        as a basis for configuring the Connection Dead Timeout 
+        and Hard Dead Timeout values.  The Connection Dead Timeout
+        must be at least 15 seconds longer than the SMB Timeout
+        and the Hard Dead Timeout must be at least double the 
+        Connection Dead Timeout.
+      . New registry entries have been added to allow the Connection
+        Dead Timeout and Hard Dead Timeout values independent of the
+        Lan Manager Workstation Session Timeout
+      . The test to enforce the SMB Client Timeout has been removed.
+        
+     One of the side-effects of removing the enforcement of the SMB 
+     Client Timeout is that regardless of whether or not the SMB client
+     is available to receive the response (and how would the SMB server
+     know) the RX protocol response can be used to update the AFS 
+     Client Service state for ready access by future SMB client 
+     requests.
+
+     This should be the end of the "Server paused or restarting messages"
+   
+   * Add support for arbitrary UNC paths to the pioctl() support.
+     This enables the fs commands as well as the AFS Shell Extension
+     to work correctly when UNC paths are being used.
+
+   * Fix afscreds.exe (by updating afskfw.lib) to search for cells via
+     DNS if the cell configuration cannot be determined via CellServDB
+
+   * Add debug info to test whether CM_BUF_WAITING or CM_SCACHE_WAITING
+     are ever set more than once at a time
+   * Fix the management of lists of cm_cell_t structures when using 
+     DNS to lookup cell information.  The previous code would fail to
+     reuse the same cellID for a cell if DNS was used more than once
+     for a given cell name.  When the ttl expired, a single cm_cell_t
+     could be inserted into the cm_allCellsp list more than once 
+     producing a loop.  In addition, the vlServerp list belonging to
+     the cell was not freed resulting in improper refCounting of the
+     servers.
+
+   * Add DNS support to cm_IoctlNewCell() which previous only examined
+     the CellServDB file
+
+   * Add cm_FreeServer() function and call it from cm_FreeServerList()
+     to properly garbage collect cm_server_t objects 
+     
+   * Add numVCs variable to smb.c to track the number of smb_vc_t 
+     objects created and use it to initialize the vcID field which 
+     previously was set to 0 in all objects resulting in FindByID 
+     collisions.
+
+   * Fixed DNS lookups to work consistently throughout the OpenAFS
+     product instead of just from within the afsd_service.exe
+
+   * Added a runtime check to ensure that AFS Client Service SMB
+     Server is accepting connections before attempting to mount
+     global drives.
+
+   * Read IP addresses for volume servers out of the CellServDB
+     file if gethostbyname() on the hostname fails.
+
+   * Fix getcellconfig() to populate both the Hostnames as well
+     as IP addresses when loading cell data via DNS
+
+   * Increase the Connection Dead Time to 50 from 20 seconds
+     Increase the Hard Dead Time to 120 from 40 seconds
+     (matches the Unix values)
+
+   * Fixed an assertion validating the number of allocated NCBs
+
+   * Fixed the build environment to consistently build for 
+     Windows 2000 and above.  (APPVER = 5.0)
+
+   * Fixed rx_debug to properly validate the receipt in incoming
+     data with select() and recvfrom().  Do not copy data out of
+     the socket buffer unless success is indicated.
+
 Since 1.3.63:
    * afsd_service.exe will now display a message box to the 
      desktop when it terminates due to an IP Address Change.