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. Shutting down..." 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.