Hello community, here is the log from the commit of package dbus-1 for openSUSE:13.1 checked in at 2013-09-26 19:32:10 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:13.1/dbus-1 (Old) and /work/SRC/openSUSE:13.1/.dbus-1.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "dbus-1" Changes: -------- --- /work/SRC/openSUSE:13.1/dbus-1/dbus-1-x11.changes 2013-09-23 10:49:27.000000000 +0200 +++ /work/SRC/openSUSE:13.1/.dbus-1.new/dbus-1-x11.changes 2013-09-26 19:32:12.000000000 +0200 @@ -1,0 +2,7 @@ +Wed Sep 25 17:34:53 CEST 2013 - [email protected] + +- Amend dbus-fall-back-to-old-run-directory.patch to prevent a + new class of hangs while upgrading D-Bus along with other + services (bnc#802525). + +------------------------------------------------------------------- dbus-1.changes: same change ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ dbus-1.spec: same change ++++++ dbus-fall-back-to-old-run-directory.patch ++++++ --- /var/tmp/diff_new_pack.kfTFr7/_old 2013-09-26 19:32:12.000000000 +0200 +++ /var/tmp/diff_new_pack.kfTFr7/_new 2013-09-26 19:32:12.000000000 +0200 @@ -1,5 +1,5 @@ diff --git a/dbus/dbus-bus.c b/dbus/dbus-bus.c -index fadc3a8..2c71cdb 100644 +index 6f81c74..96416c6 100644 --- a/dbus/dbus-bus.c +++ b/dbus/dbus-bus.c @@ -421,6 +421,153 @@ _dbus_bus_notify_shared_connection_disconnected_unlocked (DBusConnection *connec @@ -181,7 +181,7 @@ } diff --git a/dbus/dbus-connection.c b/dbus/dbus-connection.c -index ee33b6c..b87c6f7 100644 +index 66315b3..467379a 100644 --- a/dbus/dbus-connection.c +++ b/dbus/dbus-connection.c @@ -348,7 +348,7 @@ static void _dbus_connection_update_dispatch_status_and_unlock (DB @@ -272,3 +272,75 @@ HAVE_LOCK_CHECK (connection); /* Unlocks and calls out to user code */ +diff --git a/dbus/dbus-sysdeps-unix.c b/dbus/dbus-sysdeps-unix.c +index e9bd9ef..0d04006 100644 +--- a/dbus/dbus-sysdeps-unix.c ++++ b/dbus/dbus-sysdeps-unix.c +@@ -773,6 +773,51 @@ _dbus_write_two (int fd, + * which is probably a good idea. + */ + ++static int ++connect_with_timeout (const char *path, ++ int fd, ++ const struct sockaddr *addr, ++ socklen_t addrlen, ++ DBusError *error) ++{ ++ struct pollfd poll_fd; ++ ++ _DBUS_ASSERT_ERROR_IS_CLEAR (error); ++ ++ if (!_dbus_set_fd_nonblocking (fd, error)) ++ { ++ _dbus_close (fd, NULL); ++ return -1; ++ } ++ ++ connect (fd, addr, addrlen); ++ ++ poll_fd.fd = fd; ++ poll_fd.events = POLLOUT | POLLERR | POLLNVAL; ++ ++ if (poll (&poll_fd, 1, 250) < 1) ++ { ++ dbus_set_error (error, ++ _dbus_error_from_errno (errno), ++ "Failed to connect to socket %s: %s", ++ path, _dbus_strerror (errno)); ++ _dbus_close (fd, NULL); ++ return -1; ++ } ++ ++ if (!(poll_fd.revents & POLLOUT)) ++ { ++ dbus_set_error (error, ++ _dbus_error_from_errno (errno), ++ "Failed to connect to socket %s: %s", ++ path, _dbus_strerror (errno)); ++ _dbus_close (fd, NULL); ++ return -1; ++ } ++ ++ return 0; ++} ++ + /** + * Creates a socket and connects it to the UNIX domain socket at the + * given path. The connection fd is returned, and is set up as +@@ -851,7 +896,14 @@ _dbus_connect_unix_socket (const char *path, + strncpy (addr.sun_path, path, path_len); + } + +- if (connect (fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) ++ if ((!strcmp (path, DBUS_SYSTEM_BUS_DEFAULT_ADDRESS) || ++ (!strncmp (DBUS_SYSTEM_BUS_DEFAULT_ADDRESS, "unix:path=", strlen ("unix:path=")) && ++ !strcmp (path, DBUS_SYSTEM_BUS_DEFAULT_ADDRESS + strlen ("unix:path=")))) && ++ connect_with_timeout (path, fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len, error) < 0) ++ { ++ return -1; ++ } ++ else if (connect (fd, (struct sockaddr*) &addr, _DBUS_STRUCT_OFFSET (struct sockaddr_un, sun_path) + path_len) < 0) + { + dbus_set_error (error, + _dbus_error_from_errno (errno), -- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
