I've experienced the following problem (Linux 2.4.22 + gcc 3.2.2):
My interface setting is: "interfaces = 192.168.1.0/24" and "bind interfaces
only = Yes"
smbd and nmbd are running fine after startup. But when I change anything with
my network interfaces (i.e. adding or removing an interface), nmbd dies within
the next minutes, claiming "reload_interfaces: No subnets to listen to.
I've had a closer look and found out that on the call of load_interfaces()
(from reload_interfaces()) the interface string hadn't been "192.168.1.0/24",
but only "192.168.1.0". Thus, it couldn't find the network any longer, as the
netmask didn't match.
The problem seems to be the following line in interpret_interfaces():
/* parse it into an IP address/netmasklength pair */
*p++ = 0;
Here, the "/" is overwritten to split the string into tokens. However, as p
points to Globals.szInterfaces, it seems to modify the string also there.
Thus, next time lp_interfaces() is used, the configuration settings are
returned as if the "/24" had never been there.
I'm pretty sure we fixed this on in 3.0.6 or later.
sorry for the same, cleaning up the database to prevent unecessary reopens of bugs.