diff options
author | Jeremy Allison <jra@samba.org> | 1997-09-03 20:15:40 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1997-09-03 20:15:40 +0000 |
commit | 82290216ad827c9f8f74ffd3aa6a37dca28174e1 (patch) | |
tree | 6638d14cbfbffac25e9d8a9a7578194ee44f2879 /source3/smbd | |
parent | 6e64355770c43e5bf6aa9896cb87f3cfaad11f1b (diff) | |
download | samba-82290216ad827c9f8f74ffd3aa6a37dca28174e1.tar.gz samba-82290216ad827c9f8f74ffd3aa6a37dca28174e1.tar.bz2 samba-82290216ad827c9f8f74ffd3aa6a37dca28174e1.zip |
nameannounce.c
nameresp.c
nameserv.c
nameservreply.c
proto.h : Removed broadcast and recurse parameters in the
queue_netbios_pkt_wins() call - they are not needed as they
should always be 'false' and 'true' respectively.
Also fixed a bug with secure name registration (WINS
server code).
server.c: Finally fixed problem with error 267 being
returned to Win95. It is needed by NT. This is a horrid
fix and I would appreciate a better one :-).
Jeremy (jallison@whistle.com)
(This used to be commit fa1305d1894a28331ba80d9de038ebf31ba902d6)
Diffstat (limited to 'source3/smbd')
-rw-r--r-- | source3/smbd/server.c | 16 |
1 files changed, 14 insertions, 2 deletions
diff --git a/source3/smbd/server.c b/source3/smbd/server.c index 50f3214919..a65ffdd81c 100644 --- a/source3/smbd/server.c +++ b/source3/smbd/server.c @@ -1985,9 +1985,10 @@ struct int new_smb_error; int old_smb_error; int protocol_level; + char *valid_remote_arch; } old_client_errmap[] = { - {ERRbaddirectory, ERRbadpath, (int)PROTOCOL_NT1}, + {ERRbaddirectory, ERRbadpath, (int)PROTOCOL_NT1, "WinNT"}, {0,0,0} }; @@ -1996,6 +1997,7 @@ struct ****************************************************************************/ int unix_error_packet(char *inbuf,char *outbuf,int def_class,uint32 def_code,int line) { + extern fstring remote_arch; int eclass=def_class; int ecode=def_code; int i=0; @@ -2024,9 +2026,19 @@ int unix_error_packet(char *inbuf,char *outbuf,int def_class,uint32 def_code,int /* Make sure we don't return error codes that old clients don't understand. */ + /* JRA - unfortunately, WinNT needs some error codes + for apps to work correctly, Win95 will break if + these error codes are returned. But they both + negotiate the *same* protocol. So we need to use + the revolting 'remote_arch' string to tie break. + + There must be a better way of doing this... + */ + for(i = 0; old_client_errmap[i].new_smb_error != 0; i++) { - if((Protocol < old_client_errmap[i].protocol_level) && + if(((Protocol < old_client_errmap[i].protocol_level) || + !strcsequal( old_client_errmap[i].valid_remote_arch, remote_arch)) && (old_client_errmap[i].new_smb_error == ecode)) { ecode = old_client_errmap[i].old_smb_error; |