Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Please keep in mind that this is still a development version and might surprise you (not necessarily in a good way).
Do not let me discourage you to build and test this version, although there will be some risks involved such as data corruption or loss of data.
Recalculated the maximum message size for write/write raw operations.
Recalculated the threshold value for the message size beyond which raw write operations are likely more effective than plain write operations.
Maximum payload size for raw write operations is now limited both by the maximum raw write size and the maximum buffer size. The smaller of both quantities is used.
Fixed decoding of maximum buffer size; this used to come out as 0, which made smbfs switch back to the default minimum supported (1024 bytes).
Corrected use of the maximum raw write size as the size used by the client to perform raw reads with. The maximum allowed are 65535 bytes for a raw read request. Likewise, the maximum raw write size is 65535 bytes, too.
Simplified the raw read portion of smba_read() by removing the test that avoids dropping into a read loop below. The loop handles the special case well.
Recalculated the overhead for SMB_COM_READ. It's still 52 bytes, but now the documentation states how this number comes about.
Recalculated the overhead for SMB_COM_WRITE. It's 52 bytes and not 56 bytes.
Because the series of write operations are not wrapped into transactions, the cached file size needs to be updated if at least one write access succeeds.
Simplified the directory cache cleanup.
smba_read() failed to register the number of bytes read successfully by smb_proc_read_raw(). This made all files appear to be empty.
smba_write() did not update the offset value correctly if the first smb_proc_write() call had succeeded.
All functions now follow a consistent error reporting scheme. A negative return value always indicates an error condition. A return value of 0 always indicates success, except for the few functions which have to return a count of bytes or directory records upon success.
Previously, it was hard to tell what function returned what in case of error, which led the bugs in smba_write() and smba_read(), neither of which gracefully fell back on SMB_COM_WRITE/SMB_COM_READ, respectively if SMB_COM_WRITE_RAW/SMB_COM_READ_RAW failed.
State variables are now named according to their respective purpose where possible. Previously, it was "rval", "errnum", "result" which were used almost interchangeably regardless of purpose.
The original implementation would wrap the SMB session setup into a NetBIOS layer, which Windows Vista, Windows 7, etc. no longer support out of the box. The updated code in smba_connect()/smba_start() now supports raw SMB over TCP which is better supported by contemporary software than the legacy NetBIOS option.
- In proc.c, smb_setup_header() initialized the SMB header length
field with a number which was too large by four bytes. Consequently,
what was later committed to the wire would have four trailing data
bytes which could contain random values. This often didn't do much
harm, but it seems that Samba 3.2.4 and Windows Vista don't like the
looks of the trailing junk bytes.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@20 26594b9e-b914-4e86-b7a1-9402bd427170