diff options
author | Jeremy Allison <jra@samba.org> | 1997-09-02 22:21:38 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1997-09-02 22:21:38 +0000 |
commit | dadb1ffb4ca5222c0b62d785cd714d65cae328e8 (patch) | |
tree | 1f071af183b0c541feda4617dbcf2d5401fcc33e /source/smbd/server.c | |
parent | 8235db6b4fbeced750c4c30edc84a61a35b39278 (diff) | |
download | samba-dadb1ffb4ca5222c0b62d785cd714d65cae328e8.tar.gz samba-dadb1ffb4ca5222c0b62d785cd714d65cae328e8.tar.xz samba-dadb1ffb4ca5222c0b62d785cd714d65cae328e8.zip |
reply.c: Removed unused variables. Caught by gcc -Wall -Werror
server.c: Fix for old DOS clients not understanding ERRbaddirectory - map to ERRbadpath.
util.c: Fix for systems with no LOG_DAEMON facility.
Jeremy (jallison@whistle.com)
Diffstat (limited to 'source/smbd/server.c')
-rw-r--r-- | source/smbd/server.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/source/smbd/server.c b/source/smbd/server.c index 93724a98612..50f32149199 100644 --- a/source/smbd/server.c +++ b/source/smbd/server.c @@ -1978,6 +1978,18 @@ struct {0,0,0} }; +/* Mapping for old clients. */ + +struct +{ + int new_smb_error; + int old_smb_error; + int protocol_level; +} old_client_errmap[] = +{ + {ERRbaddirectory, ERRbadpath, (int)PROTOCOL_NT1}, + {0,0,0} +}; /**************************************************************************** create an error packet from errno @@ -1998,17 +2010,30 @@ int unix_error_packet(char *inbuf,char *outbuf,int def_class,uint32 def_code,int else { while (unix_smb_errmap[i].smbclass != 0) - { - if (unix_smb_errmap[i].unixerror == errno) + { + if (unix_smb_errmap[i].unixerror == errno) { eclass = unix_smb_errmap[i].smbclass; ecode = unix_smb_errmap[i].smbcode; break; } i++; - } + } } + /* Make sure we don't return error codes that old + clients don't understand. */ + + for(i = 0; old_client_errmap[i].new_smb_error != 0; i++) + { + if((Protocol < old_client_errmap[i].protocol_level) && + (old_client_errmap[i].new_smb_error == ecode)) + { + ecode = old_client_errmap[i].old_smb_error; + break; + } + } + return(error_packet(inbuf,outbuf,eclass,ecode,line)); } |