diff options
author | Jeremy Allison <jra@samba.org> | 1997-12-16 09:20:34 +0000 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 1997-12-16 09:20:34 +0000 |
commit | 16bf14adf1b78f7ec4d3d267d500258fdf399627 (patch) | |
tree | 5933e3edc94f51bce97bf9ebca498b373fdcdc2e /source3/nmbd/nmbd_become_lmb.c | |
parent | 5d4345b66de2bbf9d60e78682d820adb30b52a79 (diff) | |
download | samba-16bf14adf1b78f7ec4d3d267d500258fdf399627.tar.gz samba-16bf14adf1b78f7ec4d3d267d500258fdf399627.tar.bz2 samba-16bf14adf1b78f7ec4d3d267d500258fdf399627.zip |
Added Lanman announce patch from Jacco de Leeuw <leeuw@wins.uva.nl>.
Also added code to stop old Samba servers that announce the workgroup
name as master browser name when they are a local master browser.
Jeremy.
(This used to be commit 3605da055737e2cc0fbfffe7772721943a5be8bd)
Diffstat (limited to 'source3/nmbd/nmbd_become_lmb.c')
-rw-r--r-- | source3/nmbd/nmbd_become_lmb.c | 29 |
1 files changed, 26 insertions, 3 deletions
diff --git a/source3/nmbd/nmbd_become_lmb.c b/source3/nmbd/nmbd_become_lmb.c index 7f54471a24..6496a2f9e5 100644 --- a/source3/nmbd/nmbd_become_lmb.c +++ b/source3/nmbd/nmbd_become_lmb.c @@ -115,7 +115,7 @@ in workgroup %s on subnet %s\n", /* Forget who the local master browser was for this workgroup. */ - *work->local_master_browser_name = '\0'; + set_workgroup_local_master_browser_name( work, ""); /* * Ensure the IP address of this subnet is not registered as one @@ -333,8 +333,7 @@ on subnet %s\n", work->work_group, subrec->subnet_name)); subrec->work_changed = True; /* Add this name to the workgroup as local master browser. */ - StrnCpy(work->local_master_browser_name, myname, - sizeof(work->local_master_browser_name)-1); + set_workgroup_local_master_browser_name( work, myname); /* Count the number of servers we have on our list. If it's less than 10 (just a heuristic) request the servers @@ -532,3 +531,27 @@ in workgroup %s on subnet %s\n", become_local_master_fail1, userdata); } + +/*************************************************************** + Utility function to set the local master browser name. Does + some sanity checking as old versions of Samba seem to sometimes + say that the master browser name for a workgroup is the same + as the workgroup name. +****************************************************************/ + +void set_workgroup_local_master_browser_name( struct work_record *work, char *newname) +{ + DEBUG(5,("set_workgroup_local_master_browser_name: setting local master name to '%s' \ +for workgroup %s.\n", newname, work->work_group )); + + if(strequal( work->work_group, newname)) + { + DEBUG(5, ("set_workgroup_local_master_browser_name: Refusing to set \ +local_master_browser_name for workgroup %s to workgroup name.\n", + work->work_group )); + return; + } + + StrnCpy(work->local_master_browser_name, newname, + sizeof(work->local_master_browser_name)-1); +} |