corosync/corosync-cs2746.patch
OBS User autobuild aa4184eba9 Accepting request 42251 from network:ha-clustering:Factory
Copy from network:ha-clustering:Factory/corosync based on submit request 42251 from user tserong

OBS-URL: https://build.opensuse.org/request/show/42251
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/corosync?expand=0&rev=1
2010-06-29 16:10:39 +00:00

61 lines
1.6 KiB
Diff

Index: trunk/exec/objdb.c
===================================================================
--- trunk/exec/objdb.c (revision 2745)
+++ trunk/exec/objdb.c (revision 2746)
@@ -1087,6 +1087,10 @@
}
hdb_handle_put (&object_instance_database, object_handle);
+ if (res == 0) {
+ object_key_changed_notification (object_handle, key_name, key_len,
+ object_key->value, object_key->value_len, OBJECT_KEY_REPLACED);
+ }
objdb_rdunlock();
return (res);
@@ -1170,6 +1174,10 @@
}
hdb_handle_put (&object_instance_database, object_handle);
+ if (res == 0) {
+ object_key_changed_notification (object_handle, key_name, key_len,
+ object_key->value, object_key->value_len, OBJECT_KEY_REPLACED);
+ }
objdb_rdunlock();
return (res);
@@ -1244,6 +1252,7 @@
struct object_key *object_key = NULL;
struct list_head *list;
int found = 0;
+ int value_changed = 0;
objdb_rdlock();
@@ -1308,8 +1317,14 @@
free(object_key->value);
object_key->value = replacement_value;
}
- memcpy(object_key->value, new_value, new_value_len);
- object_key->value_len = new_value_len;
+ if (memcmp (object_key->value, new_value, new_value_len) == 0) {
+ value_changed = 0;
+ }
+ else {
+ memcpy(object_key->value, new_value, new_value_len);
+ object_key->value_len = new_value_len;
+ value_changed = 1;
+ }
}
else {
ret = -1;
@@ -1317,7 +1332,7 @@
}
hdb_handle_put (&object_instance_database, object_handle);
- if (ret == 0) {
+ if (ret == 0 && value_changed) {
object_key_changed_notification (object_handle, key_name, key_len,
new_value, new_value_len, OBJECT_KEY_REPLACED);
}