diff options
author | Jeremy Allison <jra@samba.org> | 2015-04-30 12:05:17 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2015-05-04 18:24:21 +0200 |
commit | db6572ef80e20b0e577b9e9fb5d233f8bdd20713 (patch) | |
tree | 98cf95d92a7fd76b1e96ffedcda7bf6438ad5e61 /source3/nmbd | |
parent | 20a7945a2695d7ed811237adde5af6549e53c6e9 (diff) | |
download | samba-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.c | 22 |
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; } |