Commit Graph
54 Commits
Author SHA1 Message Date
Olaf Barthel 81598879d5 Updated to version 2.8
Added the WRITETHRESHOLD parameter which can be used to disable the separate transmission of the SMB message header and its payload if the combined sizes of both are smaller than or equal to the threshold value. This is intended to improve write performance for small amounts of data which would otherwise linger in the transmission queue.

Added the READTHRESHOLD counterpart to WRITETHRESHOLD which affects the read operations.

The smb_receive_raw() function in "sock.c" no longer copies the NetBIOS header into the receive buffer separately, but makes sure that the initial receive operation takes care of it.

The allocate_path_name() function in "smb_abstraction.c" failed to put the path separator character where it should be, resulting in the path name and the file/directory name to get lumped together. This affected creation of files and directories both.

The default values for READTHRESHOLD and WRITETHRESHOLD now have the effect of transmitting the SMB header and the payload separately, just like it was introduces in version 2.1.

Use something like READTHRESHOLD=1500 and WRITETHRESHOLD=1500 to send packets smaller than or equal to 1500 bytes as a combined lump of data, and data larger than 1500 bytes as separate SMB header and payload.

When processing the share name the limitations on the individual components (server name, share, port number/IP service name) are no longer verified using hard-coded lengths, but use the respective buffer limits instead. The port number/IP service name length check is new.

Added more debug log output to the code which now performs the file and lock name/address lookups instead of walking throug the entire file/lock lists.
2018-12-19 16:09:04 +01:00
obarthel ad9b817ccb Updated to version 2.3
Added const qualifiers to the parameters used by the functions in "crypt.c". This in turn revealed that the smb_encrypt() function did not in fact modify the password string passed to it, which allowed the smb_proc_reconnect() function in "proc.c" to be simplified.

Augmented the file handle, file lock and SMB file access operations with splay trees to improve performance for validation and lookup. Instead of having to walk the entire list of file, lock or SMB file entries, comparing the list entries by name or address, the entire process should have to check 1-5 entries only.

This splay tree functionality is a compile time option which has to be enabled in the "splay.h" header file.

If there is a port number given as part of the share name which is out of range, smbfs now reports this as a specific error rather than just stating that the service is not valid.

Replaced duplicate code in "smb_abstraction.c" which built path names from a parent directory name and a file/directory name with a single common solution.

Revised the build makefiles to create the standard smbfs variant rather than the one with full debugging support enabled. The AmigaOS4 variant specifically avoids using cross-compilation options which would have to be enabled first, if needed.
2018-12-15 14:09:18 +01:00
obarthel e5f42326e5 Updated to version 2.3
Added the ADDVOLUME option, which defaults to "yes". If no volume name is
provided, smbfs will use the service name as the template, e.g. if you
connect to //server-name/pictures then the default volume name will
be "pictures". The idea is that if the file server allows this, you
should not need to start the smbfs program with any parameter other
than the service/share name and it should work out of the box.

Preparations for showing error messages when running as a Workbench
program would corrupt memory once the message was ready for display,
but this only happened in the AmigaOS4 build. As far as I can tell
this never worked correctly on AmigaOS4. Thanks go to Matthew Kille
who reported the problem!

Simplified the icon parameter processing used when running smbfs
as a Workbench program. The reworked code is now basically limited
to processing and setting up the same configuration data which the
shell command use employs. Both paths share the same configuration
data checking and handling.

Turns out that the ACTION_CURRENT_VOLUME function does need to return
the volume node, not the device node. Note to self: a 'struct DeviceList'
refers to a volume (DLT_VOLUME), whereas a 'struct DeviceNode' refers
to a device (DLT_DEVICE). See? This could have been easily been avoided :-/

Added more code documentation, especially for the various constants and
data structures defined and used in "main.c".

Reading from the file name translation file now performs better error
detection and reporting. If read errors should crop up, the error message
will now say so. If the file is shorter than required the error message
will reflect this.

Reworked the smb_proc_reconnect() function so that it does not end up
truncating the password before it is encrypted. This means that up to
63 characters of the password can be used to produce the encrypted
form, resolving problems with longer server passwords not quite
matching what you entered. However, since this long encrypted password
is still accompanied by the legacy encrypted form which truncates the
password to 14 characters (which are converted to all-upper-case
letters) there is no actual gain in terms of security...
2018-12-08 12:11:09 +01:00
obarthel 312427f5d3 Updated to version 1.184
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.
2018-11-03 11:56:46 +01:00
obarthel 3a06bbdacf Updated to version 1.181
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.
2018-09-15 11:56:09 +02:00
obarthel 806d8089bf Updated to version 1.177
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.
2018-08-27 15:06:45 +02:00
obarthel bc59f2e6b5 Updated to version 1.176
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.
2018-08-12 11:14:44 +02:00
obarthel d3e1771901 Updated to version 1.160
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.
2018-07-01 11:01:35 +02:00
Olaf Barthel bfc6b74ddc Updated to version 1.158
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.
2018-06-27 11:14:20 +02:00
obarthel b6a27b716c Updated to version 1.155
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.
2018-06-24 12:46:04 +02:00
obarthel 622eb1af6d Updated to version 1.154
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.
2018-06-16 18:39:52 +02:00
Olaf Barthel 17757b925e Updated to version 1.153
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.
2018-06-14 13:31:46 +02:00
obarthel 593e22abb2 Updated to version 1.152
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.
2018-06-11 20:16:56 +02:00
obarthel 7e518c9064 Updated to version 1.150
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.
2018-06-10 10:10:40 +02:00
obarthel 005958e221 Updated to version 1.148
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.
2018-06-08 15:18:46 +02:00
obarthel 31c8fb0d77 Updated to version 1.146
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.
2018-06-03 11:36:04 +02:00
obarthel 32c75549a4 Updated to version 1.144
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.
2018-06-01 15:35:50 +02:00
obarthel 41e8bc46bd Updated to version 1.143
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.
2018-05-30 18:59:23 +02:00
obarthel 8e4d177607 Updated to version 1.140
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.
2018-05-27 15:38:19 +02:00
obarthel ea486c36c9 Updated to version 1.139
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.
2018-05-26 14:37:48 +02:00
Olaf Barthel 329b22942d Updated to version 1.137
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.
2018-05-24 14:24:46 +02:00
Olaf Barthel 951e61cc62 Updated to version 1.136
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.
2018-05-22 12:34:02 +02:00
obarthel 8807ed9641 Updated to version 1.135
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.
2018-05-21 14:20:09 +02:00
obarthel 5f07e3e857 Updated to version 1.133
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.
2018-05-20 11:19:48 +02:00
obarthel afe7b87f24 Updated to version 1.132
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.
2018-05-19 15:43:09 +02:00
obarthel 6b58679cd6 Updated to version 1.130
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.
2018-05-13 13:42:16 +02:00
obarthel 8daa23142f Updated to version 1.129
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.
2018-05-13 12:42:55 +02:00
obarthel 047be4f827 Updated to version 1.124
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.
2018-05-06 16:50:02 +02:00
obarthel 61735b08c2 Updated to version 1.222
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.
2018-05-05 15:03:16 +02:00
obarthel cd5669e306 Updated to version 1.120
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.
2018-05-01 15:14:45 +02:00
obarthel e65efa9686 smb_proc_write_raw() no longer stalls after writing 16 KBytes
Looks like the SMB_COM_WRITE_RAW implementation is really as simple as the documentation suggested. Just two packets need to be sent to to the server.
2018-04-11 12:20:33 +02:00
obarthel 94cf193a82 Updated to version 1.116 2017-12-23 09:11:11 +01:00
Olaf Barthel dcef889911 Hide password debug output
This is no information which should be shared when writing debug files.
2016-05-01 10:40:31 +02:00
Olaf Barthel d0064a11cd Added WRITEBEHIND and PREFERWRITERAW options
Added a new error code which may be used by Samba to indicate that  directory to be deleted still contains something.
2016-04-26 15:51:56 +02:00
Olaf Barthel 0e7a0ff3d6 More detailed error class/code translation information now shows up in the debug log.
The SMB dump output can now be stored in a file, rather than having to be redirected to one. When storing it in a file, the output will be appended to an existing file, otherwise a new file will be created.

The raw read/write functions now respect the upper limit for the amount of data to be written, as given by the server.

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.

Recalculated the overhead for the SMB_COM_WRITE_RAW command, and it's 63 bytes, not 4.

Unless smb_proc_write_raw() finds that sending the packet results in a transmission error, it will try to pick up the server responses. Previously, it would not even try that, which could deadlock the client<->server message exchange.
2016-04-17 11:40:50 +02:00
Olaf Barthel 3ff8a79053 Message length fix / Error message update
The SMB message length bit #17 is now properly filled in with the respective bit of the payload length.

Added the remaining error codes covered by the "Common Internet File System (CIFS) Protocol" documentation.
2016-04-09 11:20:19 +02:00
Olaf Barthel 8b0b3fbe48 Version bump 2016-04-04 14:22:20 +02:00
Olaf Barthel 5a0c3d1a85 SMB message header initialized revised
The SMB message header is now zeroed in exactly one place only.

The SMB_COM_TREE_CONNECT_ANDX client request no longer sets the message error field.
2016-04-03 11:40:23 +02:00
Olaf Barthel a920b1818d blkmode becomes capabilities
The client capabilities were never properly initialized, which could have led to any number of interesting side-effects, such as NT status information being transmitted instead.

The client now announces itself as a Unix system if the server does so, too.

The record locking command did not initialize the oplock level at all. Fixed.

Other SMB packets were not completely initialized either, which has been corrected.
2016-04-02 12:32:28 +02:00
Olaf Barthel d8e77ce386 Rolled back a "bug fix" / SMB_COM_WRITE_RAW handling corrected
Turns out that the length filled in by smb_setup_header() was not actually off by 4 bytes but entirely correct. This caused SMB packets to be sent four bytes short, and probably causing some SMB server implementations to ignore them altogether.

A successful SMB_COM_WRITE_RAW command may cause the server to send interim progress update responses, ending with a final SMB_COM_WRITE_RAW_COMPLETE message. This is now handled correctly.
2016-03-30 13:43:56 +02:00
Olaf Barthel 2fc3650b2e Leftover indendation fixes 2016-03-28 12:09:54 +02:00
Olaf Barthel ba332083a4 Cleaned up the indentation 2016-03-27 18:11:12 +02:00
Olaf Barthel f6e4f963f8 Reworked word/dword conversion code
The word/dword conversion code should be more robust now, using the type casts where needed.

The maximum transmission size provided by the server is now a local variable and no longer stored in the global server parameters because it is really only needed here.

The maximum transmission size limit requested by the user is no longer ignored.
2016-03-06 15:20:16 +01:00
Olaf Barthel 3df0f8e50a Added one more error code translation entry
Added "ERRnosuchshare" (67) to dos_msgs[] table.
2016-02-28 13:36:53 +01:00
Olaf Barthel 99fe89d475 Added support for raw SMB over TCP
This complements the functionality in the updated SMB abstraction layer. Also added a little documentation for some of the various undocumented magic numbers and fields of the SMB commands set up in this implementation. There is more to come, eventually.
2016-02-21 13:45:51 +01:00
Olaf Barthel 57bfcc3407 - Added Harry Sintonen's fix for the large write issue.
git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@26 26594b9e-b914-4e86-b7a1-9402bd427170
2009-07-22 07:52:59 +00:00
Olaf Barthel ec1b2a97db smbfs 1.73 (17.4.2009)
- Modified smb_valid_packet() in proc.c to check whether the packet
  received is smaller than expected, not whether the length matches
  exactly. This seems to fix the protocol negotiation with Samba 3.2.5
  for now. Haven't checked Vista yet, though...


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@23 26594b9e-b914-4e86-b7a1-9402bd427170
2009-04-17 11:09:41 +00:00
Olaf Barthel 2f0d253eef smbfs 1.72 (14.4.2009)
- 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
2009-04-14 11:33:05 +00:00
Olaf Barthel 210865e526 smbfs 1.71 (13.6.2005)
- The extended directory scanning entry conversion code now swaps
  the last modification and last write access date stamps. This
  matches the time of the last modification, as returned by the
  regular ACTION_EXAMINE_FH/ACTION_EXAMINE packets. Note that the
  time resolution is a little bit coarser because the modification
  time as expressed by the SMB getattr function cannot represent
  60 distinct seconds per minute but only 30. The net effect is
  that the resulting time stamps in a directory listing and by
  examining a file can differ by one second.

- The DST option's time offset was added to rather than subtracted
  from the local time. Fixed.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@17 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 13:14:37 +00:00
Olaf Barthel fd1b68d775 smbfs 1.70 (13.6.2005)
- Introduced a new option to account for daylight savings time
  when appropriate.

- Looks like some of the time stamps used in "proc.c" are
  transmitted in local time after all; brought back the
  conversion functions.


git-svn-id: file:///Users/olsen/Code/migration-svn-zu-git/logical-line-staging/amiga-smbfs/trunk@15 26594b9e-b914-4e86-b7a1-9402bd427170
2005-06-13 08:43:17 +00:00