This is an additional followup email to my original (13 Feb of same title).
I believe I have uncovered the root cause of many seemingly unrelated slowdowns. In nmbd/nmbd_packets.c, function listen_for_packets(), lines #1847~1860 (as of 2.2.7a source), reads: if(lp_bind_interfaces_only() && (sock_array[i] == ClientNMB) && (!is_local_net(packet->ip))) { DEBUG(7,("discarding nmb packet sent to broadcast socket from %s:%d\n", inet_ntoa(packet->ip),packet->port)); free_packet(packet); } else if (ip_equal(loopback_ip, packet->ip) && packet->port == global_nmb_port) { DEBUG(7,("discarding own packet from %s:%d\n", inet_ntoa(packet->ip),packet->port)); free_packet(packet); } else { /* Save the file descriptor this packet came in on. */ packet->fd = sock_array[i]; queue_packet(packet); } This is done while receiving packets from port 137. The problem is that if, bind interfaces only = true interfaces = 192.168.1.0/24 then, NMBD will discard any packets from local SMBDs (ie., 127.0.0.1). To see how this slows down the system, use the following configuration (a lot of installations are like this): [global] security = user wins support = yes bind interfaces only = true interfaces = 192.168.1.0/24 Any name lookups passing through resolve_wins() will attempt 3 times to send packets to 127.0.0.1:137. All of these packets will time out because they will match the conditions that resulting in "discarding nmb packet sent to broadcast socket....". This will result in > 6 sec. slowdown every time. (BTW, similar code sequence exists for port 138 but I'm not sure if that's an issue.) As a temporary solution, setting interfaces = to include 127.0.0.0/8 works, but has side effects (such as spawning SMBD to listen on 127.0.0.1:139). Two possible code solutions: 1) is_local_net() always return true for 127.0.0.1 ip. This would certain match the semantics, but is_local_net is used in two other functions (both looking for the DMB), and might have unintentional consequences. 2) replace the code sequence above with, BOOL is_loopback = ip_equal(loopback_ip, packet->ip); if (!is_loopback && lp_bind_interfaces_only() && (sock_array[i] == ClientNMB) && (!is_local_net(packet->ip))) { DEBUG(7,("discarding nmb packet sent to broadcast socket from %s:%d\n", inet_ntoa(packet->ip),packet->port)); free_packet(packet); } else if (is_loopback && packet->port == global_nmb_port) { DEBUG(7,("discarding own packet from %s:%d\n", inet_ntoa(packet->ip),packet->port)); free_packet(packet); } else { /* Save the file descriptor this packet came in on. */ packet->fd = sock_array[i]; queue_packet(packet); } Thanks, Peter Hurley [EMAIL PROTECTED] PS - I don't have a development environment or I would have changed this myself and tested it.