1
0
mirror of https://github.com/samba-team/samba.git synced 2024-12-28 07:21:54 +03:00

namedbname.c: Fixed *nasty* bug that caused nmbd to spin and eat memory

and CPU whilst trying to become a master browser. Don't ask,
              you don't want to know :-).
nameresp.c: Tidied formating of code.
nameservresp.c: Added debug value of IP address that is rejecting our
                registration.
jallison@whistle.com
(This used to be commit c0bae276a9)
This commit is contained in:
Samba Release Account 1997-05-15 23:47:34 +00:00
parent e896730fe7
commit 5495a3446d
3 changed files with 29 additions and 22 deletions

View File

@ -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 */ /* add the name to the WINS list if the name comes from a directed query */
search |= wins ? FIND_WINS : FIND_LOCAL; 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 for SELF names only */
search |= self ? FIND_SELF : 0; search |= self ? FIND_SELF : 0;

View File

@ -210,33 +210,33 @@ void expire_netbios_response_entries(time_t t)
for (n = d->responselist; n; n = nextn) for (n = d->responselist; n; n = nextn)
{ {
nextn = n->next; nextn = n->next;
if (n->repeat_time <= t) if (n->repeat_time <= t)
{ {
if (n->repeat_count > 0) if (n->repeat_count > 0)
{ {
/* resend the entry */ /* resend the entry */
initiate_netbios_packet(&n->response_id, n->fd, n->quest_type, initiate_netbios_packet(&n->response_id, n->fd, n->quest_type,
n->name.name, n->name.name_type, n->name.name, n->name.name_type,
n->nb_flags, n->bcast, n->recurse, n->send_ip); n->nb_flags, n->bcast, n->recurse, n->send_ip);
n->repeat_time += n->repeat_interval; /* XXXX ms needed */ n->repeat_time += n->repeat_interval; /* XXXX ms needed */
n->repeat_count--; n->repeat_count--;
} }
else else
{ {
DEBUG(4,("timeout response %d for %s %s\n", DEBUG(4,("timeout response %d for %s %s\n",
n->response_id, namestr(&n->name), n->response_id, namestr(&n->name),
inet_ntoa(n->send_ip))); inet_ntoa(n->send_ip)));
dead_netbios_entry (d,n); /* process the non-response */ dead_netbios_entry(d,n); /* process the non-response */
remove_response_record(d,n); /* remove the non-response */ remove_response_record(d,n); /* remove the non-response */
continue; continue;
} }
} }
} }
} }
} }

View File

@ -113,7 +113,8 @@ static void response_name_reg(struct nmb_name *ans_name,
} }
else 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. */ /* oh dear. we have problems. possibly unbecome a master browser. */
name_unregister_work(d,name,type); name_unregister_work(d,name,type);