Name: Changelog
Project: Sharity
Author: Christian Starkjohann <cs@obdev.at>
Tabsize: 4
This Revision: $Id: Changelog,v 1.60 2002/06/03 21:58:17 cs Exp $

This file lists all changes to the Sharity package that are visible to
the user. It is maintained by hand. Contrary to other logfile styles
newer entries are at the bottom.

A new Changelog-file has been created for Sharity 2. There are too many
changes between 1.x and 2.x for a continuous documentation.


* Release 0.19: 1999-04-13 (first public beta of 2.x series)

- switched to new installation script.
- retain server during smbTimeout() in smb.c
- fixed bug on userAuthenticate(): ask if stored credentials don't work
- use "-p" option for renice in sharity.init
- fixed error codes for cifsumount if server/user not found
- semi-automatic manual creation: uses php3 to create HTML files
- all commandline utilities support the -man option now
- Sharity GUI asks for logout from servers now when it exits
- fixed many malloc bugs and other possible crashes
- added new SMB options "findAutoclose" and "findImplicitResume". The
  functionality is needed for interoperability with FacetWin.
- new 'mkbindist' script for creating binary distributions
- corrected some bugs in combination with SSL

* Release 0.20: 1999-05-31

- don't link with GTK shared libs. They would be required for running even
  if all symbols are satsified from the dynamic libs.
- added byte counters to pslsocket.c (debugging)
- don't use "expr match xxx yyy", use "expr xxx : yyy" instead in filelist
- changed GUI configuration to allow NULL entries for some text fields
- new debug logging of UI communication
- added lock for login button in GUI. Lock the button while the server list
  is retrieved. This prevents multiple dialogs from popping up unintentionally.
- fixed bug in the setup procedure: detection of existing installation did
  hang the install.

* Release 0.21: 1999-06-09

- added new flag for GUI panels: runModal option
- don't kill daemon in shutdown script if shares can't be unmounted
- prevent ordinary users from changing the license setting
- use a single fixed UDP port for NFS now. This makes unmounting of stale
  mounts MUCH easier!
- fixed memory leak: renaming files leaked cifsFile objects
- file handle cache did not work at optimum, "least recently used" info was
  not always updated.
- new debugging option: DEBUG_LOCKING (see foundation/process.h)
- fixed 2 possible deadlocks between file.c and fileattrdos.c
- new mount table locking for Linux should conform to system standards
- lock file open against parent directory renames because MacOS X overlaps
  writes to a file with renames of that file's parent.

* Release 0.22: 1999-06-22

- autoclose of files did not work. Fixed.
- don't require that the mountpoint directory exists prior to mounting
  (Nextstep/Openstep only)
- don't ask for credentials 500ms after the user cancelled the dialog. This
  catches retries of some applications if an access fails because the user
  cancelled.
- bug-workaround for OS/2: server reports file size of 0 as long as file is
  open

* Release 0.23: 1999-07-05

- new icon and info-panel and page header in manual
- some minor bugfixes in the Openstep GUI
- made the setting "nfsKernelCacheTime" configurable from the GUI
- added troubleshooting hints: for bad performance and for browsing problems

* Release 0.24: 1999-07-16

- added Unicode character map for UTF-8 encoding used by MacOS X
- changed filelist to automatically use correct character encoding depending
  on installation platform
- changed filelist to skip the X11 GUI silently on Openstep
- fixed cifslicense -ll: did not report server limit correctly
- fixed filelist: also create link to /usr/local/bin for GUI app
- renamed user_t and 'struct user' to cifsUser_t and 'struct cifsUser' to
  avoid name conflict with headers on HP-UX 11 with HP's cc.
- improved error message if mountpoint does not exist (changed "no such
  file or directory" to "Mount point does not exist")
- made HP-UX adaptions in the startup script sharity.init
- new question during install: Optimize for speed or security
- corrected case-mapping: srvCaseMapping() returned requestTimeout instead of
  caseMapping.
- improved handling of timeout events on TCP connection to server: transmit
  timeout is now equal to requestTimeout, if a request timeout occurs, the
  connection is broken and should be re-established by the outer reconnect
  mechanism in nfs2.c
- Do not retry connects if they are initial connects.

* Release 0.25: 1999-07-22

- accept also <0> netbios computer names for an LMB, not just <0x20> types
- fixed browsing of domains containing non-ASCII characters
- fixed bug in nfslookup.c: newly cached files which were open were added to
  the list of open files, but no files were closed if the list grew too big.
- do not invalidate the directory cache easily. It's important that one
  directory read iterates through the entire directory without recalibrating
  the position, since the position is stored as index which changes when
  files are inserted or deleted.
- don't use the byteCount in the SMB given by the server, rather compute it
  from the block size. AppleShare IP gives wrong byte counts....
- allow serverClass identification from server capability flags
- connect to IPC tree with any user, if no NULL session available

* Release 2.00: 1999-08-01

- breaking the connection to the server during SMB requests could bring the
  SMB transmission system into an inconsistent state. This could hang further
  requests to the server. Fixed this bug.
- limit file times to 31 bit for Solaris. Solaris 7 is not year 2038 safe...
- new configuration setting: "Users may store passwords and mounts" (there
  was a similar setting in the CIFS Global section before, but it was not
  implemented)
- re-parse user database if changed

* Release 2.01: 1999-08-22

- changed runAsUser configuration to "nobody" (fixes problem with
  ProcessViewer bug on MacOS X)
- Sharity sometimes reported wrong file modification dates with Windows 9x
  servers. This was a configuration file bug; fixed.
- fixed bug in datacache.c: if neighbouring cache pages were requested out
  of order and no fee pages were available, a two concurrent processes could
  wait for a page to become ready. One process waiting for the data, the other
  for the resource. It was possible that the latter received the signal before
  the former, making the former one return the wrong data.
- lookup for '..' was wrong in pseudo-inode lookup strategy. Corrected.
- fixed bug in blockalloc.c/barrFirstClearBit(). This bug crashed Sharity
  when more than 131072 DIFFERENT files were accessed, e.g. during a backup
  of a large server.
- commandline user interface: always separate columns in listing with at
  least one space
- changed startup script to print an error if you try to start a second
  instance of the daemon

* Release 2.02: 1999-09-11

- return execute-permissions in fake-mode
- set the sticky-bit for symlinks in automounter (browser). This prevents
  mass mounts on Openstep and probably MacOS X.
- Sharity daemon can crash if automounted shares are unmounted manually.
  Fixed: remove delayed callback if automount object is freed.
- Made connect/disconnect log-message configurable.
- Better error message if mounting fails due to permissions for the mountpoint.
- new feature: Option to add explicitly configured servers to browse list
- new feature: Option to enable browsing only for automounted shares/servers
- fixed bug in pslsocket.c: reset rx-state to idle before trying to connect
- fixed renice parameters in sharity.init
- changed authentication mechanism of user-interface utilities: Use Unix-
  permissions of temporary sockets instead of "set uid root". This should
  greatly improve the security.
- separate logLevel for communication trace with user-interface.
- implemented share-level security mode "the right way"
- documented NT registry setting for better TCP/IP performance
- implemented beta-version add-on for version numbers
- set re-parse times to 0 on Nextstep/Openstep to work around NeXT's NFS
  locking bug. There must not be a file access during an NFS write operation.
- don't use getpwuid for uids known to be invalid
- during mounting, map requests by the kernel (root) to the mounting UID
- fixed autoclose bug: newly created files did not have autoclose attribute
- new implementation of 'cifslogin' which asks for shares on share-level
  security servers
- group license limits by user-code. This allows adding of licenses, such as
  building a 3 client license from a 1 client and a 2 client license.
- new configuration variables 'fileModeMask' and 'dirModeMask' in CIFS module
- fixed bug: sharityd threads could hang when multiple users accessed the
  same file simultaneously. This made the file inaccessible (access timeout)
  for all but the first accessing user.
- default installation optimizes for speed now.
- fixed bug in capitalization of sharenames in browser for Asian character
  sets.
- fixed harmless malloc bug: memory was accessed shortly after it was freed
  in source/backends/cifs/pslnetbios.c netbSetConnectStatus() (fixed by
  retain in netbConnectStatusChanged()).
- changed nice-level to -5 instead of -16, this less egoistic approach makes
  slower machines more responsive during excessive copy operations. However,
  increasing Sharity's priority is still a good idea since if Sharity can
  run, the other processes usually depend on Sharity's result.

* Release 2.03: 2000-02-09

- display host name in all windows to avoid confusion on X-Windows remote
  sessions.
- allow unencrypted password in share-level security if share password is NULL
- compare lookups in browser with blacklist patterns and ignore it if the
  name matches a pattern. This feature should help the "massive mounts"
  problem because lookups of files like ".dumpster" or ".dir.tiff" are
  ignored.
- fixed bug in loginListLoginProc(): request to GUI client could be sent
  before reply to button request was sent. Added a 'elpCallCancelPrev()'.
- share password was stored at user-object even if the tree-connect failed
  (because the server can't encrypt passwords). Fixed this problem.
- using the -P option to cifslogin with a bad password resulted in an
  infinite loop. Fixed.
- changed smbConnectionLost() to avoid infinite loops.
- new handling of local time to GMT conversion, should implement DST periods
  correctly.
- configure browser for /Network/CIFS on MacOS X by default
- on Linux: mount with locking disabled
- set sticky bit on links only if automount not done (this tells GUI tools
  to be careful touching the link only if the automount is not done, if it
  is done, the link may be treated in the same way as any other link).
- integrated changes in X-Windows GUI to display Icon in iconic window and
  to start up in iconic state.
- added StartupParameters.plist for MacOS X
- setup script (filelist) allows external default values for WINS and
  Workgroup now
- install startup script on MacOS X and -Server
- never map a CIFS error to NFS_OK. The returned data structures are probably
  invalid (->crash). Fixed this for the error DOS/87. May cause other
  incompatibilities, though.
- added config file option to disable NFS cache by changing microsecond part
  of file modification dates
- removed code to run as user "nobody". This code caused a lot of porting
  problems, was an unnecessary overhead and did not add any real security
  because we did not give up root permissions permanently.
- do not strip executables during installation -- we want debug infos for
  core dumps. If stripping reduces size considerably, it should be done
  before packaging anyway. Do not strip in the 'mkbindist' script, too, for
  the same reason.
- changed startup script to check not only if a process with the pid in the
  sharity.pid file exists, but also if it's a sharityd.
- fixed possible crash in nfsLookup.c: if a file was invalidated but not
  freed because it was the parent of an other file, the cache lost a
  reference leading to a double release and thus a crash.
- changed much of the Unicode code to cope with Apple's expansion of Unicode
  characters as exlained in the HFS+ documentation.
- do not install symlinks on top of binaries -- if the user chooses this
  configuration, skip the installation of symlinks
- corrected bug in automounter: symlinks had 0 permissions while nothing
  mounted
- workaround for minor NT bug in findnext: may return no more entries and
  close search automatically, but forgets to set "end of search" flag.
- try to send netbios queries from port 137 if possible. This should fix some
  browsing problems with W95 LMBs
- lock LMB loockups. Overlapping lookups would not all use port 137...
- new logLevel for netbios name service stuff
- make sure we remove automount mountpoint directories
- prepared installation for drag-and-drop installation on MacOS X: create
  var directory from startup script automatically
- setup script defaults can be configured from environment now
- files and directories in browser are owned by the accessing user,
  atime = ctime = mtime
- don't require remounting of browser if domain/workgroup name changed
- fixed parameter substitution in setup script to work with values containing
  wildcards
- netbios names of browse servers may contain spaces now
- handle forceful logouts from the server (with server manager on NT)
  gracefully
- retry CIFS commands if the command is aborted with "connection lost"

* Release 2.04: 2001-04-11

- new modules in cifs: dgsocket, nbdgs for initiating browser elections
- LMB lookup now does: 1. broadcast for workgroup name, 2. initiate LMB
  election, 3. lookup domain master browser, 4. retry a couple of times.
- NBNS name lookup discards request messages now -- on some operating
  systems we hear our own echo of broadcasts and have interpreted our original
  request as reply to our request.
- [2.5 b1 on 2001-04-26]
- defaults for mount panel are taken from selected stored mount
- login panel preserves data of unsuccessful logins
- new input field 'domain' in login panel, defaults to browser's domain
- new option -D for domain in cifsmount and cifslogin
- new flags for input field: GUI can alert user if settings don't become
  active immediately (if they require a reboot etc.)
- fixed possible crash during unmount: retain shares from files
- encrypt plain text password for sharity.udb
- [2.5 b2 on 2001-05-07]
- fixed new bug: encryption of plain text password did not cope with NULL
- changed interface listing function in system.c: ifreq structure is bigger
  if the struct sockaddr exceeds the default size of the structure. That's
  why we originally did a strings search, but searching for strings is not
  reliable.
- don't use signed bitfields for Unicode case mapping. Some compilers don't
  implement signed bitfields [notably the native AIX compiler...].
- bind to an interface address on each network we are connected to for
  datagram sockets and use the appropriate socket for broadcasts. This
  ensures that the source address is a local address of the broadcast area.
- avoid broadcasts of unicast packets intended for WINS
- sysNetworkInterfaces() should now work on Macs
- new config option to prevent creation of resource forks -- returns an error
  on create and rename to forbidden names.
- set NFS host name mount parameter to mount specification -- results in
  more understandable output of the mount list of the system's mount utility
  on BSD.
- [2.5 b3 on 2001-06-19]
- fixed compile problem on older Linux versions
- added config section for Compaq Advanced Server

* Release 2.05: 2001-07-22

- fixed bug where access to more than 47 levels of directory hierarchy
  crashed the daemon
- fixed possible crash of daemon when LMB is not found
- [2.6 b1 on 2001-08-26]
- use /etc/mnttab device name as disk name for Darwin's autodiskmount daemon
- handle eject/unmount requests/notifications sent by Darwin's autodiskmount
- new option to disable automatic unmount since Mac OS X applications don't
  re-trigger the automounter; this option is on by default on Mac OS X
- automount in /Volumes on Mac OS X
- allow storing of automounts and handle restored automounts correctly
- added 2GB NFS2 limit to "limitations" section of the manual
- [2.6 b2 on 2001-10-16]
- added manual override option for server's security mode
- fixed bug in license counting for home-user version

* Release 2.06: 2001-10-31

- implemented NFS3 frontend
- new mechanism for frontend selection (ordered list of modules)
- [2.7 b1 on 2001-11-06]
- check return value of sysRealpath() in cifsmount
- remove files from cache if getattr (and thus NFS lookup) fails
- new config option to return create time in Unix ctime
- use 'renice -n' in stratup script on AIX
- added patch for OpenBSD to system.c function sysNetworkInterfaces()
- [2.7 b2 on 2002-02-18]
- use 64 bit capable function to read file size
- for each call into diskarb framework fork separate thread
- do not accept 0x00 names in reverse netbios name lookup
- allow big network interface addresses for sysNetworkInterfaces() on all
  operating systems
- [2.7 b3 on 2002-03-25]
- DNS lookups are now performed in a separate task in background
- improved browsing: reverse netbios name lookup (node status request) falls
  back to name "*" if query for domain name fails
- removed various file system accesses to avoid deadlocks with autodiskmount
  on Mac OS X
- use more standard mnttab entries on Mac OS X
- implemented NFS3 mounting for AIX
- [2.7 b4 on 2002-04-16]
- use default frontend for 'cifsmount', not always "nfs2".
- ask for default frontend during install
- fixed possible crash in mkdir() and create()
- don't use -p for renice on AIX
- do not check mount point ownership for root
- disable Trash on Mac OS X by default -- works around Finder bug

* Release 2.07: 2002-05-31
