diff options
-rw-r--r-- | source3/namedbname.c | 6 | ||||
-rw-r--r-- | source3/nameresp.c | 50 | ||||
-rw-r--r-- | source3/nameservresp.c | 3 |
3 files changed, 33 insertions, 26 deletions
diff --git a/source3/namedbname.c b/source3/namedbname.c index 5c514c263f..2e0afc1497 100644 --- a/source3/namedbname.c +++ b/source3/namedbname.c @@ -421,6 +421,12 @@ struct name_record *add_netbios_entry(struct subnet_record *d, /* add the name to the WINS list if the name comes from a directed query */ search |= wins ? FIND_WINS : FIND_LOCAL; + + /* If it's a local search then we need to set the subnet + we are looking at. */ + if(search & FIND_LOCAL) + found_subnet = d; + /* search for SELF names only */ search |= self ? FIND_SELF : 0; diff --git a/source3/nameresp.c b/source3/nameresp.c index 3128b00ac5..f2b3ba167a 100644 --- a/source3/nameresp.c +++ b/source3/nameresp.c @@ -210,33 +210,33 @@ void expire_netbios_response_entries(time_t t) for (n = d->responselist; n; n = nextn) { - nextn = n->next; + nextn = n->next; if (n->repeat_time <= t) - { - if (n->repeat_count > 0) - { - /* resend the entry */ - initiate_netbios_packet(&n->response_id, n->fd, n->quest_type, - n->name.name, n->name.name_type, - n->nb_flags, n->bcast, n->recurse, n->send_ip); - - n->repeat_time += n->repeat_interval; /* XXXX ms needed */ - n->repeat_count--; - - } - else - { - DEBUG(4,("timeout response %d for %s %s\n", - n->response_id, namestr(&n->name), - inet_ntoa(n->send_ip))); - - dead_netbios_entry (d,n); /* process the non-response */ - remove_response_record(d,n); /* remove the non-response */ - - continue; - } - } + { + if (n->repeat_count > 0) + { + /* resend the entry */ + initiate_netbios_packet(&n->response_id, n->fd, n->quest_type, + n->name.name, n->name.name_type, + n->nb_flags, n->bcast, n->recurse, n->send_ip); + + n->repeat_time += n->repeat_interval; /* XXXX ms needed */ + n->repeat_count--; + + } + else + { + DEBUG(4,("timeout response %d for %s %s\n", + n->response_id, namestr(&n->name), + inet_ntoa(n->send_ip))); + + dead_netbios_entry(d,n); /* process the non-response */ + remove_response_record(d,n); /* remove the non-response */ + + continue; + } + } } } } diff --git a/source3/nameservresp.c b/source3/nameservresp.c index 565a156565..27356d95e6 100644 --- a/source3/nameservresp.c +++ b/source3/nameservresp.c @@ -113,7 +113,8 @@ static void response_name_reg(struct nmb_name *ans_name, } else { - DEBUG(2,("name registration for %s rejected!\n", namestr(ans_name))); + DEBUG(2,("name registration for %s rejected by ip %s!\n", + namestr(ans_name), inet_ntoa(p->ip))); /* oh dear. we have problems. possibly unbecome a master browser. */ name_unregister_work(d,name,type); |