summaryrefslogtreecommitdiff
path: root/source3/nameelect.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/nameelect.c')
-rw-r--r--source3/nameelect.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/source3/nameelect.c b/source3/nameelect.c
index e115b0d881..ba66f41a91 100644
--- a/source3/nameelect.c
+++ b/source3/nameelect.c
@@ -255,6 +255,7 @@ void become_master(struct subnet_record *d, struct work_record *work)
{
case MST_NONE: /* while we were nothing but a server... */
{
+ DEBUG(3,("go to first stage: register ^1^2__MSBROWSE__^2^1\n"));
work->state = MST_WON; /* ... an election win was successful */
work->ElectionCriterion |= 0x5;
@@ -263,29 +264,29 @@ void become_master(struct subnet_record *d, struct work_record *work)
work->ServerType &= ~SV_TYPE_POTENTIAL_BROWSER;
add_server_entry(d,work,myname,work->ServerType,0,ServerComment,True);
- DEBUG(3,("go to first stage: register ^1^2__MSBROWSE__^2^1\n"));
-
/* add special browser name */
add_my_name_entry(d,MSBROWSE ,0x01,NB_ACTIVE|NB_GROUP);
- break;
+ /* DON'T do anything else after calling add_my_name_entry() */
+ return;
}
case MST_WON: /* while nothing had happened except we won an election... */
{
+ DEBUG(3,("go to second stage: register as master browser\n"));
work->state = MST_MSB; /* ... registering MSBROWSE was successful */
/* add server entry on successful registration of MSBROWSE */
add_server_entry(d,work,work->work_group,domain_type,0,myname,True);
- DEBUG(3,("go to second stage: register as master browser\n"));
-
/* add master name */
add_my_name_entry(d,work->work_group,0x1d,NB_ACTIVE );
- break;
+ /* DON'T do anything else after calling add_my_name_entry() */
+ return;
}
case MST_MSB: /* while we were still only registered MSBROWSE state... */
{
+ DEBUG(3,("2nd stage complete: registered as master browser\n"));
work->state = MST_BROWSER; /* ... registering WORKGROUP(1d) succeeded */
/* update our server status */
@@ -301,8 +302,12 @@ void become_master(struct subnet_record *d, struct work_record *work)
if (lp_domain_master())
{
DEBUG(3,("third stage: register as domain master\n"));
+
/* add domain master name */
add_my_name_entry(d,work->work_group,0x1b,NB_ACTIVE );
+
+ /* DON'T do anything else after calling add_my_name_entry() */
+ return;
}
else
{
@@ -313,11 +318,12 @@ void become_master(struct subnet_record *d, struct work_record *work)
}
case MST_BROWSER: /* while we were still a master browser... */
{
- work->state = MST_DOMAIN; /* ... registering WORKGROUP(1b) succeeded */
-
/* update our server status */
if (lp_domain_master())
{
+ DEBUG(3,("fourth stage: samba is now a domain master.\n"));
+ work->state = MST_DOMAIN; /* ... registering WORKGROUP(1b) succeeded */
+
work->ServerType |= SV_TYPE_DOMAIN_MASTER;
if (lp_domain_logons())
@@ -325,7 +331,6 @@ void become_master(struct subnet_record *d, struct work_record *work)
work->ServerType |= SV_TYPE_DOMAIN_CTRL;
work->ServerType |= SV_TYPE_DOMAIN_MEMBER;
}
- DEBUG(3,("fourth stage: samba is now a domain master.\n"));
add_server_entry(d,work,myname,work->ServerType,0,ServerComment,True);
}