Browse Source

Fix dbus part of corosync-notifyd

Function dbus_connection_read_write which causes block for 0.5 sec is
replaced by correct dispatching of input and flushing of output buffer.

Signed-off-by: Jan Friesse <jfriesse@redhat.com>
Reviewed-by: Fabio M. Di Nitto <fdinitto@redhat.com>
Jan Friesse 13 năm trước cách đây
mục cha
commit
4ac9cd59e7
1 tập tin đã thay đổi với 8 bổ sung1 xóa
  1. 8 1
      tools/corosync-notifyd.c

+ 8 - 1
tools/corosync-notifyd.c

@@ -424,7 +424,14 @@ static void
 _cs_dbus_auto_flush(void)
 {
 	dbus_connection_ref(db);
-	dbus_connection_read_write(db, 500);
+	while (dbus_connection_get_dispatch_status(db) == DBUS_DISPATCH_DATA_REMAINS) {
+		dbus_connection_dispatch(db);
+	}
+
+	while (dbus_connection_has_messages_to_send(db)) {
+		dbus_connection_flush(db);
+	}
+
 	dbus_connection_unref(db);
 }