summaryrefslogtreecommitdiff
path: root/source3/nmbd
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2015-04-30 12:05:17 -0700
committerJeremy Allison <jra@samba.org>2015-05-04 18:24:21 +0200
commitdb6572ef80e20b0e577b9e9fb5d233f8bdd20713 (patch)
tree98cf95d92a7fd76b1e96ffedcda7bf6438ad5e61 /source3/nmbd
parent20a7945a2695d7ed811237adde5af6549e53c6e9 (diff)
downloadsamba-db6572ef80e20b0e577b9e9fb5d233f8bdd20713.tar.gz
s3: nmbd: Ensure we only set work_changed = true if we modify the record.
https://bugzilla.samba.org/show_bug.cgi?id=11254 Signed-off-by: Jeremy Allison <jra@samba.org> Reviewed-by: Andreas Schneider <asn@samba.org>
Diffstat (limited to 'source3/nmbd')
-rw-r--r--source3/nmbd/nmbd_incomingdgrams.c22
1 files changed, 17 insertions, 5 deletions
diff --git a/source3/nmbd/nmbd_incomingdgrams.c b/source3/nmbd/nmbd_incomingdgrams.c
index b728c13e5fe..9a69252997b 100644
--- a/source3/nmbd/nmbd_incomingdgrams.c
+++ b/source3/nmbd/nmbd_incomingdgrams.c
@@ -327,12 +327,25 @@ a local master browser for workgroup %s and we think we are master. Forcing elec
ttl, comment);
} else {
/* Update the record. */
- servrec->serv.type = servertype|SV_TYPE_LOCAL_LIST_ONLY;
+ if (servrec->serv.type !=
+ (servertype|SV_TYPE_LOCAL_LIST_ONLY)) {
+ servrec->serv.type =
+ servertype|SV_TYPE_LOCAL_LIST_ONLY;
+ subrec->work_changed = true;
+ }
+ if (!strequal(servrec->serv.comment,comment)) {
+ strlcpy(servrec->serv.comment,
+ comment,
+ sizeof(servrec->serv.comment));
+ subrec->work_changed = true;
+ }
update_server_ttl(servrec, ttl);
- strlcpy(servrec->serv.comment,comment,sizeof(servrec->serv.comment));
}
-
- set_workgroup_local_master_browser_name( work, server_name );
+
+ if (!strequal(work->local_master_browser_name, server_name)) {
+ set_workgroup_local_master_browser_name( work, server_name );
+ subrec->work_changed = true;
+ }
} else {
/*
* This server is announcing it is going down. Remove it from the
@@ -344,7 +357,6 @@ a local master browser for workgroup %s and we think we are master. Forcing elec
}
}
- subrec->work_changed = True;
done:
return;
}