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:
parent
e896730fe7
commit
5495a3446d
@ -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;
|
||||
|
||||
|
@ -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);
|
||||
{
|
||||
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--;
|
||||
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)));
|
||||
}
|
||||
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 */
|
||||
dead_netbios_entry(d,n); /* process the non-response */
|
||||
remove_response_record(d,n); /* remove the non-response */
|
||||
|
||||
continue;
|
||||
}
|
||||
}
|
||||
continue;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -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);
|
||||
|
Loading…
Reference in New Issue
Block a user