Andrew Tridgell [Mon, 29 Dec 1997 18:46:20 +0000 (18:46 +0000)]
avoid the ~ operator in netmask operations as apparently it causes
problems on some systems (eg. freeBSD 2.2.2). I'm surprised by this
but the change looks harmless. Patch from fred@datalync.com
Andrew Tridgell [Fri, 26 Dec 1997 10:01:57 +0000 (10:01 +0000)]
fixed a couple of illegal uses of scanf() in the nmbd wins code. They
caused a core dump under IRIX when compiled with -64.
In general you cannot assume things about variable sizes. In
particular sizeof(time_t) may not equal sizeof(long) and
sizeof(uint16) may not equal sizeof(short).
There are probably other bugs like this. We'll need to check all
format statements for use of %ld, %hx etc. In general these should not
be used unless you have an explicit cast to the appropriate type.
Herb Lewis [Wed, 24 Dec 1997 15:42:14 +0000 (15:42 +0000)]
This is actually Jeremy, working as Herb :-).
Fixed bug where, when server is shut down it would always
do a lm announce broadcast of shutdown. This could cause other
nmbd's to think that they have seen an lm announce broadcast and
start doing it themselves.
Changed to only send lm announce shutdown if admin configured it
or one was seen on the subnet.
Jeremy.
Jeremy Allison [Wed, 24 Dec 1997 09:30:56 +0000 (09:30 +0000)]
Added SIGUSR1/SIGUSR2 handling.
Sending nmbd/smbd a SIGUSR1 will raise the debug level by one (capped at 10)
sending a SIGUSR2 will lower it (lower limit at zero).
Jeremy.
Jeremy Allison [Wed, 24 Dec 1997 08:49:44 +0000 (08:49 +0000)]
nmbd_elections.c: Added new parameter to dump_workgroups call.
nmbd_incomingdgrams.c: Deal with announcements with servertype == 0 - these
are announcements that a machine is shutting down and must be treated differently.
nmbd_serverlistdb.c: Exposed remove_server_from_workgroup as external.
Added code to dump out workgroups on signal correctly.
nmbd_workgroupdb.c: Added new parameter to dump_workgroups call.
Jeremy.
Jeremy Allison [Wed, 24 Dec 1997 07:10:04 +0000 (07:10 +0000)]
Finally added the code Andrew wanted that will allow a Samba domain
master browser to use the *<1b> feature of the Samba WINS server to
get a full workgroup list.
nmbd.c: Added timed call to collect_all_workgroup_names_from_wins_server().
nmbd_browsesync.c: Meat of the code to implement collect_all_workgroup_names_from_wins_server().
nmbd_incomingdgrams.c: Fixed comment typo.
Jeremy.
Jeremy Allison [Wed, 24 Dec 1997 04:32:01 +0000 (04:32 +0000)]
Bugfix from Branko Cibej <branko.cibej@hermes.si>
- client.c had a workaround embedded in it for his
earlier bug in StrnCaseCmp - removed this.
Jeremy.
Jeremy Allison [Tue, 23 Dec 1997 13:21:36 +0000 (13:21 +0000)]
Fixed nastly little bug where client was sending open_and_X call
with smb_mode (smb_vwv[3]) of 0x20 == DENY_WRITE + read-only-open.
and smb_ofun (smb_vwv[8]) of 0x11 == Create if not exist plus append
on a read-only share.
This was mapped into the strange unix flags of (O_RDONLY|O_CREAT)
- essentially O_CREAT as O_RDONLY == 0.
We were checking the unix flags directly against O_RDONLY instead
of masking off the open mode flag bits before doing the comparison,
so this open was being refused even though it was valid on a
read-only share.
Also ensured that the O_CREAT bit was masked out of the flags
bit if the open was done on a read-only share (as doing a unix
open( filename, O_RDONLY|O_CREAT, xxx) will create a zero length
file if the user had permission to write into the directory - which
should be denied on a read-only share.
Thanks to Mark Peek @ Whistle for giving me this test case.
Jeremy.
Jeremy Allison [Sat, 20 Dec 1997 14:36:11 +0000 (14:36 +0000)]
client.c:
clientgen.c:
clientutil.c:
clitar.c: Changed usage of receive_smb to new function client_receive_smb
except for one use of receive_smb in client.c. This is the
receive_smb used to discard packets received whilst in a
keyboard wait state.
util.c: Created new function client_receive_smb that ignores session
keepalives just as the old receive_smb used to do. Created
internal function read_smb_length_return_keepalive that is
used internally by the changed receive_smb call.
Changed read_smb_len to not use an internal buffer - it is
never called with a null buffer so such code is redundant.
Jeremy.
Jeremy Allison [Sat, 20 Dec 1997 10:52:00 +0000 (10:52 +0000)]
loadparm.c: Added fix for veto oplock files bug from Charles Hoch <hoch@hplcgh.hpl.hp.com>
server.c, util.c: Added fix for oplock break requests blocking due to server being
blocked in read call. Bug found by Charles Hoch <hoch@hplcgh.hpl.hp.com>.
Jeremy.
Dan Shearer [Sat, 20 Dec 1997 10:06:07 +0000 (10:06 +0000)]
This may be a waste of time, but I thought if we keep nibbling at this it might
end up being a curent announce for each new release. Then again maybe we should
start from the one Jeremy and I did for 1.9.17. Just doodling really.
Jeremy Allison [Sat, 20 Dec 1997 05:25:37 +0000 (05:25 +0000)]
trans2.c: Forced trans2_findfirst to behave as NT does in error returns.
util.c: Applied fix from Branko Cibej <branko.cibej@hermes.si> where
StrnCaseCmp tests one character too many.
Jeremy.
Adding the cache module.
I'll be using the cache module to replace the name cache in mangle.c. The
new one should be much faster and should require less memory.
Another feature is that the cache size can be limited by the amount of
memory used in addition to the number of entries allowed. With the
current cache, the default is to allocate 12800 bytes representing 50
entries (256 bytes each). With the same amount of memory, I should be able
to load over around two hundred entries.
Changes to the AVL trees were minor (missing comments).
Chris -)-----
Jeremy Allison [Thu, 18 Dec 1997 11:05:00 +0000 (11:05 +0000)]
kanji.h: Fixed problems with re-definitions of strchr and others on AIX.
nmbd_nameregister.c: Applied fix found by "Eloy A. Paris" <eparis@ven.ra.rockwell.com>
(don't re-use lists after you have freed them :-).
Jeremy.
Jeremy Allison [Tue, 16 Dec 1997 12:21:39 +0000 (12:21 +0000)]
WHATSNEW.txt - updated for 1.9.18alpha13.
docs/smb.conf.5: Removed unused NTDOMAIN params. Added new params.
source/loadparm.c: Put #ifdef NTDOMAIN around unused params.
source/nmbd_become_lmb.c: Removed check for workgroup name in lmb name.
Jeremy.
Jeremy Allison [Tue, 16 Dec 1997 09:20:34 +0000 (09:20 +0000)]
Added Lanman announce patch from Jacco de Leeuw <leeuw@wins.uva.nl>.
Also added code to stop old Samba servers that announce the workgroup
name as master browser name when they are a local master browser.
Jeremy.
Jeremy Allison [Tue, 16 Dec 1997 07:30:25 +0000 (07:30 +0000)]
nmbd_incomingdgrams.c: Fix bug with Syntax 5.1 servers reported by SGI where
they do host announcements to LOCAL_MASTER_BROWSER_NAME<00> rather than
WORKGROUP<1d>.
nmbd_incomingrequests.c: Deal with WINS_PROXY_NAME issues - don't reply
with that name if it's the same broadcast net.
nmbd_serverlistdb.c: Stopped writing "Unknown" for local master browsers
we don't know.
nmbd_winsproxy.c: Deal with WINS_PROXY_NAME issues - don't reply
with that name if it's the same broadcast net.
Jeremy.
Andrew Tridgell [Sun, 14 Dec 1997 18:45:51 +0000 (18:45 +0000)]
give out file handles differently on each new connection because of a
common bug in MS clients where they try to reuse a file descriptor
from an earlier smb connection. This code increases the chance that
the errant client will get an error rather than causing corruption
Jeremy Allison [Sat, 13 Dec 1997 14:16:07 +0000 (14:16 +0000)]
This is it ! The mega-merge of the JRA_NMBD_REWRITE branch
back into the main tree.
For the cvs logs of all the files starting nmbd_*.c, look
in the JRA_NMBD_REWRITE branch. That branch has now been
discontinued.
Jeremy.
While working on a general-purpose caching module (out soon), I thought of
a better way to handle the node pointer array used in ubi_BinTree. The
change simplified the code a bigbunch. It also forced updates to all of
the binary tree modules. CRH
Andrew Tridgell [Wed, 3 Dec 1997 05:08:07 +0000 (05:08 +0000)]
applied a patch from Norm Jacobs to allow "printcap name = lpstat"
to use lpstat to obtain the printer list on systemV systems.
I've now made this the default on all SYSV systems.
Jeremy, you were a little worried about the security of this patch. I
believe it's OK as the user has no control over the options given to
popen() and the pipe is only open for reading.
Andrew Tridgell [Wed, 3 Dec 1997 04:20:39 +0000 (04:20 +0000)]
change the "username map" option to allow the user to stop the
processing part way through the file if a match is found. If a line
starts with ! and a match is made by that line then processing
stops. This allows better wildcard handling.
Andrew Tridgell [Wed, 3 Dec 1997 03:43:05 +0000 (03:43 +0000)]
allow users to disable the NetWkstaUserLogon call in server level
security by changing a setting in local.h or adding it to their
Makefile. See comment in local.h
Andrew Tridgell [Wed, 3 Dec 1997 02:27:50 +0000 (02:27 +0000)]
fix toupper(c) on a already uppercase char and tolower(c) on an
already lowercase char when using code pages. Jeremy, can you confirm
that this looks right? It comes from PR#1992
Jeremy Allison [Tue, 2 Dec 1997 19:00:18 +0000 (19:00 +0000)]
asyncdns.c: Removed warning when compiling with -DSYNC_DNS.
nameelect.c: Tidied up settings of work->ServerType when unbecoming things.
nmbd.c: Fixed pidFile warning.
server.c: Fixed pidFile warning.
Jeremy.
Jeremy Allison [Sun, 30 Nov 1997 02:58:34 +0000 (02:58 +0000)]
clientgen.c: Added cli_mv() (used in a recent torture test).
reply.c: Changed reply_open_and_X to split out the oplock
request bits from core and extended and if an oplock was granted only set
the corresponding bit on reply.
server.c: Added code to dynamically allocate i/o buffers in oplock_break
(prevents recursion problems) , also made reset of sent_oplock_break
explicit.
Jeremy.
Andrew Tridgell [Fri, 28 Nov 1997 03:30:24 +0000 (03:30 +0000)]
fixed a very nasty oplock bug. We could send oplock break requests on
files that aren't open if the file happened to close while the oplock
was in transit. We would end up sending a oplock break request on
another random file (actually the open file that happened to have the
highest fnum). Then we wouldn't get a response, so smbd would keep
sending and would actually flood the net with an infinite number of
oplock break requests!