revert between 56095 -> 55830 in arch
[AROS.git] / workbench / network / smbfs / documentation / history.doc
blob8b5cea3a15ed44b9585cd969dd8d7b298288b240
1 smbfs 1.19 (27.11.2000)
3 - Fixed ACTION_FINDOUTPUT implementation; the memory to hold the
4   name of the file to be created was released before the file
5   was created. This could cause garbage to be written to the
6   output file.
8 - Fixed ACTION_COPY_DIR implementation; the name of the lock to
9   be duplicated did not get duplicated.
11 - Fixed ACTION_EXAMINE_OBJECT and ACTION_EXAMINE_NEXT
12   implementations; protection bits are now reported 'properly'
13   with respect to read/write access.
16 smbfs 1.20 (27.11.2000)
18 - ACTION_EXAMINE_NEXT now filters out SMB names that include
19   '/' or ':' characters.
22 smbfs 1.21 (28.11.2000)
24 - Modified ACTION_RENAME_DISK to remove the volume node before
25   changing it. It also sends the appropriate diskremove/diskinserted
26   input events now.
28 - Reorganized and rewrote the code to reduce dependencies on
29   the compiler runtime library.
31 - Unified error reporting code.
33 - SMBFS can now be launched from Workbench using the same parameters
34   you would use when starting it from Shell. Error reporting
35   has been adapted to show an error requester and to pool error
36   messages rather than printing them to the console.
39 smbfs 1.22 (30.11.2000)
41 - Fixed the test that looks for file/lock access mode collisions.
43 - No longer changes the case of the password; there is now an
44   option to make the change.
46 - Fixed ACTION_SAME_LOCK which was comparing the same lock with
47   itself.
49 - Added support for ACTION_EXAMINE_ALL, ACTION_EXAMINE_ALL_END
50   and ACTION_WRITE_PROTECT packet types.
52 - No longer allows for files and locks to refer to "." and "..".
53   The use of the backslash character '\' is also disallowed in
54   Amiga file/directory names.
57 smbfs 1.23 (30.11.2000)
59 - In the ExNext()/ExAll() handling functions local error variables
60   were shadowing each other. Fixed.
62 - The error reporting requester now also lists the name of the
63   service to connect to. This should help in telling different
64   invocations of the program apart.
66 - The size of the directory cache is now a configurable option.
68 - Added a new option which forces all name comparisons to be
69   done in a case-sensitive fashion.
71 - Reading/writing data to/from a file in chunks larger than
72   65535 bytes could fail and cause the file system to hang.
75 smbfs 1.24 (1.12.2000)
77 - Added an option to allow hidden files to be omitted from
78   directory listings.
80 - Improved upon the error reporting in the code that directly
81   calls the TCP/IP API functions.
83 - Reorganized the AmigaDOS packet handling switch..case
84   list.
86 - Added support for ACTION_MORE_CACHE packet type. The
87   cache in this context refers to the directory scanning
88   cache.
90 - Improved upon the host lookup error reporting code.
92 - Added support for file name translation such as via the
93   CrossDOS translation table files.
96 smbfs 1.25 (2.12.2000)
98 - SMBFS now displays some configuration information as soon as
99   it has successfully connected to the file server and is ready
100   for action. This output can be suppressed with the new
101   "QUIET" command line parameter.
103 - When removing a directory, the error code returned is examined
104   more closely to see whether the directory was not yet empty.
106 - When setting the protection bits of a file or directory, the
107   file system now treats either 'protected from deletion' and
108   'protected from writing' as indications to mark a file as
109   write protected. Previously, a file had to be both protected
110   from deletion and from writing to be treated as write protected.
112 - Cleaned up the program's data structures and eliminated all
113   static data that would hold state information. The entire
114   client side is now completely reentrant.
117 smbfs 1.26 (3.12.2000)
119 - File and directory names are no longer duplicated in the
120   SMB abstraction layer. The strings supplied by the Amiga
121   file system layer are referenced instead.
123 - Changed the way the ACTION_MORE_CACHE implementation returns
124   its result code to be compatible with current practices.
127 smbfs 1.27 (4.12.2000)
129 - The changes I made to the file read command in order to allow it
130   to read more than 65535 bytes at a time did not allow read
131   attempts at the end of the file to come out properly. Fixed.
133 - Integrated password encryption code lifted from Samba. Hope
134   it works as it should, because if it doesn't, I wouldn't know
135   how to fix it...
138 smbfs 1.28 (4.12.2000)
140 - Oh dear, more fixes to the password encryption code and the
141   connection setup to follow it. This time I managed to test the
142   code briefly with Samba and password encryption enabled.
143   Amazingly, it seems to work this time!
146 smbfs 1.29 (6.12.2000)
148 - Writes larger than 65535 bytes could stall and slow down the
149   file system. Fixed. [Thore Böckelmann]
151 - The ACTION_MORE_CACHE implementation never returned the total
152   number of cache entries allocated. Fixed. [Thore Böckelmann]
154 - Plain text passwords didn't seem to work any more after I made
155   the changes to allow for encrypted passwords to be used. Fixed.
158 smbfs 1.30 (6.12.2000)
160 - Changed the structure of the share names by which the file system
161   refers to the data on the server; they all start with a backslash
162   now. This seems to help NT and doesn't break the rest.
164 - For file shares exported using 'share level security', no passwords
165   will be transmitted.
168 smbfs 1.31 (7.12.2000)
170 - The ACTION_EXAMINE and ACTION_EXAMINE_FH implementations now verify
171   that the name to return will fit into the FileInfoBlock's limited
172   buffer space.
174 - Deleting files and directories from a directory currently being
175   scanned via ACTION_EXAMINE_NEXT or ACTION_EXAMINE_ALL will now cause
176   the directory scanner to restart. This is ugly, I know, but at least
177   it won't cause the scanning process to hickup or lose entries
178   directory entries during its course of duty. The flip side is that
179   the scanner will probably return some entries twice. There must
180   be a better way to implement this, but for now, this is it.
182 - Tried to make device and volume node removal safer.
184 - SMBFS now always adds a device node to go along with the volume node.
185   It's safer that way because for every file system you either have a
186   single device node in the system (and no volume node) or a volume
187   node *and* a device node. If the device node is missing, there's
188   typically something wrong and some application software cannot handle
189   this case properly. SMBFS will attempt to add a new, unique device
190   node every time it is launched.
192 - When specifying the name of the file system device to add, SMBFS
193   now complains if that name already exists.
196 smbfs 1.32 (8.12.2000)
198 - File and directory modification dates were always off by six hours and
199   one second. I don't know how that happens, it doesn't seem to be a bug
200   in the date conversion routines. I worked around the problem by adding
201   and subtracting an adjustment value.
204 smbfs 1.33 (10.12.2000)
206 - The ACTION_PARENT_DIR implementation did not return a ZERO lock for
207   the root directory. Fixed. [Rudolph Riedel]
209 - Replaced the doubly-linked Exec lists with skip lists which
210   are better suited for the repeated lookup operations that
211   are so common in the file system. This time the list code
212   seems to work properly.
214 - Added -- largely untested -- time and date decoding routines for
215   directory entries returned by NT.
218 smbfs 1.34 (10.12.2000)
220 - Had to take out the skip list code again since it did not seem to
221   work reliably.
223 - Further tweaking to the NT date and time decoding code.
226 smbfs 1.35 (10.12.2000)
228 - Small modification to the ACTION_EXAMINE_NEXT/ACTION_EXAMINE_ALL code
229   which tries to work around a strange effect caused by Amiga Samba
230   returning the contents of an empty drawer.
233 smbfs 1.36 (11.12.2000)
235 - More fixes to the NT date and time conversion code and the
236   strange six hour fixup that seems to be necessary for the
237   'regular' time conversion to work.
240 smbfs 1.37 (11.12.2000)
242 - Replaced the entire 'regular' date and time conversion code. The
243   strange six hour fixup is no longer necessary.
246 smbfs 1.38 (11.12.2000)
248 - Ditched the packet size kludges in "sock.c" and "proc.c" I had put
249   in there. It seems that only the 'smba_write()'/'smba_read()' code
250   could trigger it, and that code was fixed quite a while ago.
252 - Migrated some code changes from the Samba source over to the
253   directory scanner.
255 - Maximum transmission size per packet is now the same as the
256   number the server allowed us to use rather than a fixed number
257   imposed by VM page sizes.
259 - Tried to clean up more of the code.
261 - Discovered that the 'smb_valid_packet()' routine never could have
262   worked and fixed it so that it now finally does what it should do.
264 - Better error propagation for some routines in "proc.c".
266 - More streamlined error testing code.
269 smbfs 1.39 (11.12.2000)
271 - Almost fixed several bugs in 'smb_proc_readdir_long()'.
273 - 'smb_proc_readdir_long()' does not work correctly. It only seems to
274   work, but will fail if the scanner is to restart before the entire
275   directory is read. Restored the old behaviour :(
278 smbfs 1.40 (13.12.2000)
280 - Took out some more unused and unnecessary code.
282 - Rewrote the time and date conversion routines.
284 - Modified the directory reading code so that it no longer relies
285   upon the last directory entry index which doesn't seem to be
286   correct most of the time.
288 - Directory scanning errors are now flagged as such.
291 smbfs 1.41 (16.12.2000)
293 - In the SMB abstraction layer, the directory cache is now invalidated
294   only if the respective action that could have invalidated it succeeds.
296 - Now clears the directory cache only if the respective action would
297   have affected the directory being cached.
299 - In debug mode [Ctrl]+F will display a list of open files and allocated
300   locks.
302 - Added very silly support for ACTION_SET_COMMENT packet.
304 - Found an interesting bug fix for 'smb_proc_readdir_long()' in the
305   Linux 2.4.0 kernel which seemed worth integrating into the file system.
308 smbfs 1.42 (19.12.2000)
310 - Integrated Chris Hertel's broadcast name query code. This means that
311   the name of the host whose file shares you want to access need no
312   longer be in the hosts database. However, you still cannot refer to
313   a host solely by its IP address.
316 smbfs 1.43 (21.12.2000)
318 - The integrated broadcase name query code would conflict with the
319   DNS lookup. Fixed. [Thore Böckelmann]
321 - The NetBIOS name query code now retries four times to get a response
322   out of the network.
324 - Put the mysterious 6 hour time offset fix back in.
327 smbfs 1.44 (29.12.2000)
329 - Rewrote the host lookup error reporting code to use the appropriate
330   API function.
332 - Discovered that all the functionality required by SMBFS was supported
333   by the original free AmiTCP 3.0 release. Changed the "bsdsocket.library"
334   open parameters.
336 - The ACTION_EXAMINE_OBJECT implementation consistently got the name of
337   the root directory wrong. Fixed.
340 smbfs 1.45 (7.1.2001)
342 - Discovered why file and directory creation dates were wrong by about
343   six hours. Fixed.
345 - The order of the parameters passed to the 'ExAll()' filter hook was
346   wrong. Fixed [Thorsteinn Sveinsson and Matt Sealey].
349 smbfs 1.46 (1.2.2001)
351 - Removed the workarounds for the mysterious 'off by six hours' bug.
352   The time delta value added was consistently wrong.
355 smbfs 1.47 (18.2.2001)
357 - The name of the domain/workgroup, the name of the user and the
358   password to be used can now be preset using environment variables.
360 - Changed the command line argument template to work better with the
361   newly introduced environment variable settings.
364 smbfs 1.48 (3.3.2001)
366 - Modified the command template so that the final parameter can no
367   longer cause all other parameters to be swallowed. Also updated
368   the documentation.
371 smbfs 1.49 (3.3.2001)
373 - Handling of ACTION_FINDUPDATE needed improving. It should have
374   created a file that didn't already exist. It now does [David Gerber].
377 smbfs 1.50 (4.3.2001)
379 - ACTION_FINDUPDATE is now associated with a shared lock. It used
380   to be an exclusive lock [David Gerber].
382 - The test to follow ACTION_FINDUPDATE that determines whether the
383   file to open already exists now also tries to 'stat()' the file
384   in question to find out whether it exists.
387 smbfs 1.51 (13.3.2001)
389 - Whoops. The new code to pull data from environment variables didn't
390   actually check whether the work group name could be set up properly
391   and thus didn't complain about it either. It now notifies you if
392   no work group name was provided and none could be found.
395 smbfs 1.52 (22.6.2001)
397 - Added another option which allows you to preset the time zone offset
398   to use when translating between the local time and the SMB server
399   time. Using the default locale doesn't work for that purpose all the
400   time since there are so many misconfigured servers out there.
402 - The ACTION_DIE packet didn't have the desired effect if the file
403   system didn't have a reason to wait for any resources to be
404   released again. It just wouldn't quit. Now it does.
406 - Before it exits, the file system no longer posts a disk change
407   event if it was launched from Workbench. I found that the steps
408   taken so far could end up deadlocking Workbench.
411 smbfs 1.53 (26.6.2001)
413 - Changed the file name parser; it should now be possible to tie assigns
414   to files and directories on an smb volume. Since the updated file name
415   translation code also is a bit smarter about when to use which
416   file name separator character, accesses to the media should be a
417   bit faster, too.
419 - When translating path names, trailing '/' characters are now properly
420   parsed, i.e. Lock("/",...) should always bring up the parent directory
421   [Matt Sealey].
423 - Duplicating a ZERO lock now works as expected.
426 smbfs 1.54 (27.6.2001)
428 - Directory and file creation didn't work that properly after applying
429   the changes I made to the parser. Fixed [Matt Sealey].
432 smbfs 1.55 (3.3.2002)
434 - At least samba 2.2.2-12 on linux can send total_data of 0 bytes. This
435   caused sock.c/smb_receive_trans2() malloc() (==AllocVecPooled) to fail
436   on smba_readdir(). Fixed [Harry Sintonen].
438 - Added quickfix against crash if smb_abstraction.c/smb_smba_readdir()
439   fails. This is by no means a real fix, but at least it doesn't crash
440   [Harry Sintonen].
442 - There is definitely something fishy in the smbfs restart/retry scheme,
443   it just doesn't work properly (all state data has to be, and is,
444   reset when restarts occur, but still it tries to use the old data as if
445   nothing happened). Someone should really take a closer look at this
446   [Harry Sintonen].
449 smbfs 1.56 (3.9.2002)
451 - Rewrote the Setup() code which allocates and initializes the device and
452   volume nodes. Lost all Forbid()..Permit() pairs on the way, making the
453   code more robust and less weird.
455 - In proc.c/smb_proc_readdir_long() now specifically watches for the
456   smb_trans2_request() function return empty data and parameter values.
457   This is now treated as an attempt to read from an empty directory.
458   Previously, there was a slight change that the information was
459   taken seriously even if NULL was returned.
462 smbfs 1.57 (3.9.2002)
464 - Ran the code through GCC and rewrote the code to get rid of the compiler
465   warnings that appeared to have something more serious about them. This
466   includes, for example, comparisons between signed and unsigned values.
469 smbfs 1.58 (5.9.2002)
471 - Rebuilt using my own TCP/IP stack SDK. Rebuilding the code with the
472   Miami SDK should still be possible, though.
474 - Changed the way smb_proc_readdir_long() aborts the job if no valid
475   data is read.
478 smbfs 1.59 (10.9.2003)  [Harry Sintonen <sintonen -at- iki -dot- fi>]
480 - Fixed ACTION_DELETE_OBJECT to restart directory scanning, it
481   searched for wrong object. Fixes the problem where every other
482   file was skipped when deleting directory.
485 smbfs 1.60 (11.2.2004) [Peter Riede <Noster-Riede -at- T-Online -dot- de>]
487 - Fixed ACTION_SEEK, it doesn't works if followed by ACTION_WRITE.
488   Fixes the problem by using the SMBlseek packet instead of just
489   remembering the position in the local FileNode structure
491 - Fixed ACTION_SETFILESIZE, has returned an errorcode of 37 instead
492   of 0L on success.
494 - Added support for the ACTION_LOCK_RECORD and ACTION_UNLOCK_RECORD
495   packets.
498 smbfs 1.61 (27.4.2004)
500 - Reworked the ACTION_SEEK implementation. Turns out that the SMB
501   lseek packet only seems to work for the Samba server but produces
502   unpredictable results with Microsoft flavoured servers. The new
503   code, which helps to avoid trouble with overlapping write access
504   and seeks, now performs much like the old one except that it
505   "notifies" the SMB server of the new file position to be used.
506   Tested both with Samba and Windows XP: works as it should.
509 smbfs 1.62 (8.5.2004)
511 - Added sanity checks to the record locking code. For example,
512   locking a record of length 0 must be considered illegal. Also,
513   since the protocol deals with 32 bit signed integers for
514   file position and record length, parameters that are "too large"
515   and come out as negative values are now rejected.
518 smbfs 1.63 (9.5.2004)
520 - Added more sanity checks to the record locking code, this time
521   to avoid integer overflows.
523 - Added support for the SMB 'archive' and 'system' file attributes,
524   which are mapped to the Amiga 'archived' and 'pure' protection
525   bits.
527 - Cleaned up the header files.
530 smbfs 1.64 (13.5.2004)
532 - ExamineFH() did not fill in the file protection bits. Fixed.
534 - Ported to AmigaOS4.
537 smbfs 1.65 (16.5.2004)
539 - The port numbers of the NetBIOS session and name services are no
540   longer hard-coded. They are now looked up (netbios-ns/udp and
541   netbios-ssn/tcp), and if that fails, the hard-coded default port
542   numbers are used instead.
544 - Tried to reduce the risk of triggering buffer overflows by replacing
545   calls to strcpy/strcat. This revealed weaknesses in a number of
546   places, including the code that fills in the names of the directory
547   entries.
549 - Instead of calling memcpy(), the code now invokes exec.library/CopyMem(),
550   which should be a wee bit faster than what the 'C' runtime library can do.
552 - Merged with Peter Riede's changes: for small packets to be sent,
553   SMBwrite is used instead of SMBwritebraw (which greatly enhances
554   performance), the server max_xmit field is initialized differently
555   if the session was opened with a SMBtconx packet and ACTION_SEEK
556   no longer sets the error code to an undefined value in case of
557   success.
560 smbfs 1.66 (10.6.2004)
562 - Added a paranoia check to the ExAll() implementation which should
563   avoid trouble with extremely short data buffers.
566 smbfs 1.67 (27.5.2005)
568 - Replaced the long NT date conversion code with something hopefully
569   much more robust. The results so far are both encouraging and
570   irritating. Dates that previously came out as "unknown" are now
571   processed, but there are differences between the dates shown in the
572   directory listing and by listing the files by name. Go figure...
574 - Transplanted some more code from Samba to handle directory entry
575   data conversion.
578 smbfs 1.68 (3.6.2005)
580 - It appears that Windows XP can produce directory listings with
581   file/directory modification times set to 0, indicating that no
582   such information is available, while the associated last file
583   write access data is present. Previously, smbfs only reported
584   the modification. If this data is unavailable and the date of
585   the last write access is, the last write access will be
586   reported instead.
589 smbfs 1.69 (13.6.2005)
591 - The time stamps used in "proc.c", as returned and submitted to
592   the SMB file system on the other end of the wire are apparently
593   all in Universally Coordinated Time already (or at least, this
594   seems to be the case with Samba and Windows XP). Hence no conversion
595   between local time and UTC is necessary, which would otherwise
596   distort all date stamps converted. I modified the file system to
597   leave all time stamps essentially unadjusted for local time in
598   "proc.c". The local time zone adjustments are now performed only
599   where the time in question is known to be Amiga-specific, such as
600   the current system time or the date stamp to set for a file.
602   The time conversion appears to be working correctly now, but it
603   does ignore the effects of daylight savings time, which you might
604   want to adjust for manually through the TIMEZONEOFFSET option
605   (careful though: this overrides your current locale-defined time
606   zone settings as far as smbfs is concerned).
608   Unsolved problem: at least Windows XP seems to return different
609   time stamps for directory listings and for indidivual files. As
610   far as I can tell, the sets of time stamps returned for either
611   doesn't match anywhere.
614 smbfs 1.70 (13.6.2005)
616 - Introduced a new option to account for daylight savings time
617   when appropriate.
619 - Looks like some of the time stamps used in "proc.c" are
620   transmitted in local time after all; brought back the
621   conversion functions.
624 smbfs 1.71 (13.6.2005)
626 - The extended directory scanning entry conversion code now swaps
627   the last modification and last write access date stamps. This
628   matches the time of the last modification, as returned by the
629   regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
630   time resolution is a little bit coarser because the modification
631   time as expressed by the SMB getattr function cannot represent
632   60 distinct seconds per minute but only 30. The net effect is
633   that the resulting time stamps in a directory listing and by
634   examining a file can differ by one second.
636 - The DST option's time offset was added to rather than subtracted
637   from the local time. Fixed.
640 smbfs 1.72 (14.4.2009)
642 - In proc.c, smb_setup_header() initialized the SMB header length
643   field with a number which was too large by four bytes. Consequently,
644   what was later committed to the wire would have four trailing data
645   bytes which could contain random values. This often didn't do much
646   harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
647   looks of the trailing junk bytes.
650 smbfs 1.73 (17.4.2009)
652 - Modified smb_valid_packet() in proc.c to check whether the packet
653   received is smaller than expected, not whether the length matches
654   exactly. This seems to fix the protocol negotiation with Samba 3.2.5
655   for now. Haven't checked Vista yet, though...
658 smbfs 1.74 (31.8.2009)
660 - Integrated Harry Sintonen's fix for the problem caused by large
661   writes to files. The respective packet size was off by one byte.
662   Thank you very much!