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 | e1e4b37ac785da3829f4326722c34a473a17ade5 (patch) | |
tree | 484ddd3771b13b01841aeffefb8b209887f10be3 /source3/smbd/server.c | |
parent | 918cc5f033360508da21d61ca1358ba8c7f0700d (diff) | |
download | samba-e1e4b37ac785da3829f4326722c34a473a17ade5.tar.gz samba-e1e4b37ac785da3829f4326722c34a473a17ade5.tar.bz2 samba-e1e4b37ac785da3829f4326722c34a473a17ade5.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)
(This used to be commit dadb1ffb4ca5222c0b62d785cd714d65cae328e8)
Diffstat (limited to 'source3/smbd/server.c')
-rw-r--r-- | source3/smbd/server.c | 31 |
1 files changed, 28 insertions, 3 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 93724a9861..50f3214919 100644 --- a/source3/smbd/server.c +++ b/source3/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)); } |