diff options
author | Samba Release Account <samba-bugs@samba.org> | 1996-07-09 18:01:46 +0000 |
---|---|---|
committer | Samba Release Account <samba-bugs@samba.org> | 1996-07-09 18:01:46 +0000 |
commit | 9fdb312a69bc966aed8d917843559cb235e17a10 (patch) | |
tree | 7d4761669c5bc9600cd3ae7f39a1f216561580fd /source3/namedbwork.c | |
parent | 3545a9b8734bfabdff760253dd73216aad25b925 (diff) | |
download | samba-9fdb312a69bc966aed8d917843559cb235e17a10.tar.gz samba-9fdb312a69bc966aed8d917843559cb235e17a10.tar.xz samba-9fdb312a69bc966aed8d917843559cb235e17a10.zip |
sorted out various timer delay bugs: nameannounce.c nameserv.c
namedbname.c:search_for_name() wasn't looking for 0x1b as well as
0x0 and 0x20 name types.
reduced number of retransmissions of packets from 4 to 3 times.
added code that ensures remote lmhosts entries don't get deleted when
a master browser cannot be found on a remote subnet. stopped forcing
an election on remote subnets if a master browser cannot be found.
stopped browse list and wins list from being written out too frequently.
only add samba's names to local interfaces.
add 0x1c name if we are a domain logon machine (needs more exploration).
why bother reloading services when receiving a SIGTERM?
sort out add_my_name_entry() and remove_name_entry() to deal with
broadcast, samba as a WINS and samba using a WINS. properly.
added extra debug information to help with expected response queue code.
updated debug comments in become_master().
altered dump_names() DEBUG format. it looks prettier.
altered wins.dat format to match DEBUG format.
lkcl
(This used to be commit 429f1f975e2936f2e220b656c51c211d48d47047)
Diffstat (limited to 'source3/namedbwork.c')
-rw-r--r-- | source3/namedbwork.c | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/source3/namedbwork.c b/source3/namedbwork.c index 7937aa4512..88f66a7b15 100644 --- a/source3/namedbwork.c +++ b/source3/namedbwork.c @@ -134,7 +134,8 @@ static struct work_record *make_workgroup(char *name) remove workgroups ******************************************************************/ struct work_record *remove_workgroup(struct subnet_record *d, - struct work_record *work) + struct work_record *work, + BOOL remove_all_servers) { struct work_record *ret_work = NULL; @@ -142,16 +143,19 @@ struct work_record *remove_workgroup(struct subnet_record *d, DEBUG(3,("Removing old workgroup %s\n", work->work_group)); - remove_old_servers(work, -1); - ret_work = work->next; + + remove_old_servers(work, -1, remove_all_servers); - if (work->prev) work->prev->next = work->next; - if (work->next) work->next->prev = work->prev; + if (!work->serverlist) + { + if (work->prev) work->prev->next = work->next; + if (work->next) work->next->prev = work->prev; - if (d->workgrouplist == work) d->workgrouplist = work->next; + if (d->workgrouplist == work) d->workgrouplist = work->next; - free(work); + free(work); + } return ret_work; } |