s3: nmbd: Ensure we only set work_changed = true if we modify the record.
authorJeremy Allison <jra@samba.org>
Thu, 30 Apr 2015 19:05:17 +0000 (12:05 -0700)
committerJeremy Allison <jra@samba.org>
Mon, 4 May 2015 16:24:21 +0000 (18:24 +0200)
https://bugzilla.samba.org/show_bug.cgi?id=11254

Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
source3/nmbd/nmbd_incomingdgrams.c

index b728c13e5fe000d2d0750cf74e05ce3b1716a4d3..9a69252997bba9c1227ad73d46ab3fbb49a1a7b4 100644 (file)
@@ -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;
 }