diff options
author | Havoc Pennington <hp@redhat.com> | 2003-04-05 19:03:40 +0000 |
---|---|---|
committer | Havoc Pennington <hp@redhat.com> | 2003-04-05 19:03:40 +0000 |
commit | 2250539aeee0569f8861841d1f5ff16f1539715e (patch) | |
tree | cdb7780972379ccac623e51b104e9db7daf401a2 /dbus | |
parent | 0cc7669fb899cfe5beb7e0069fe2a71a08b6abaa (diff) |
2003-04-05 Havoc Pennington <hp@pobox.com>
* bus/loop.c (bus_loop_iterate): fix the timeout code, using
magic from GLib
* dbus/dbus-spawn.c (_dbus_babysitter_unref): set sitter_pid
to -1 once we've reaped the babysitter
(_dbus_babysitter_handle_watch): do as much work as we can, not
just one go of it
* bus/activation.c: add code using DBusBabysitter so that we
handle it when a service fails to start up properly.
(bus_activation_service_created): don't remove the activation
entries as we go, just let them get removed when we free the pending
activation. Unref reply messages after sending them.
Diffstat (limited to 'dbus')
-rw-r--r-- | dbus/dbus-errors.h | 1 | ||||
-rw-r--r-- | dbus/dbus-spawn.c | 6 |
2 files changed, 7 insertions, 0 deletions
diff --git a/dbus/dbus-errors.h b/dbus/dbus-errors.h index 59fa1e49..8d8e16ec 100644 --- a/dbus/dbus-errors.h +++ b/dbus/dbus-errors.h @@ -73,6 +73,7 @@ struct DBusError #define DBUS_ERROR_INVALID_ARGS "org.freedesktop.DBus.Error.InvalidArgs" #define DBUS_ERROR_FILE_NOT_FOUND "org.freedesktop.DBus.Error.FileNotFound" #define DBUS_ERROR_UNKNOWN_MESSAGE "org.freedesktop.DBus.Error.UnknownMessage" +#define DBUS_ERROR_TIMED_OUT "org.freedesktop.DBus.Error.TimedOut" void dbus_error_init (DBusError *error); void dbus_error_free (DBusError *error); diff --git a/dbus/dbus-spawn.c b/dbus/dbus-spawn.c index 5ced84fc..5fa2d5e8 100644 --- a/dbus/dbus-spawn.c +++ b/dbus/dbus-spawn.c @@ -293,6 +293,8 @@ _dbus_babysitter_unref (DBusBabysitter *sitter) else _dbus_verbose ("Babysitter exited abnormally\n"); } + + sitter->sitter_pid = -1; } if (sitter->error_watch) @@ -699,6 +701,10 @@ _dbus_babysitter_handle_watch (DBusBabysitter *sitter, handle_error_pipe (sitter, revents); else if (fd == sitter->socket_to_babysitter) handle_babysitter_socket (sitter, revents); + + while (LIVE_CHILDREN (sitter) && + babysitter_iteration (sitter, FALSE)) + ; return TRUE; } |