diff options
author | Anders Carlsson <andersca@codefactory.se> | 2003-02-16 10:00:37 +0000 |
---|---|---|
committer | Anders Carlsson <andersca@codefactory.se> | 2003-02-16 10:00:37 +0000 |
commit | f116b1282f8482dff6dc797f64270d95f79b53a3 (patch) | |
tree | d56ba5a2f6cb8797b54b079d5b754abac5cd14bc /dbus/dbus-message.c | |
parent | ac5183eafc6bd77bec094c3ba103701a4540f08d (diff) |
2003-02-16 Anders Carlsson <andersca@codefactory.se>
* bus/activation.c: (load_directory), (bus_activation_init),
(bus_activation_activate_service):
* bus/activation.h:
* bus/driver.c:
(bus_driver_handle_activate_service), (bus_driver_handle_message):
More work on the activation handling.
* dbus/dbus-errors.h:
Add some error messages
* dbus/dbus-message.c: (dbus_message_new_error_reply):
* dbus/dbus-message.h:
New function that creates an error message.
* dbus/dbus-protocol.h:
Add ACTIVATE_SERVER message.
* dbus/dbus-server-unix.c: (unix_handle_watch),
(_dbus_server_new_for_domain_socket):
Call _dbus_fd_set_close_on_exec.
* dbus/dbus-sysdeps.c: (make_pipe), (do_exec),
(_dbus_spawn_async), (_dbus_disable_sigpipe),
(_dbus_fd_set_close_on_exec):
* dbus/dbus-sysdeps.h:
Add _dbus_fd_set_close_on exec function. Also add function that checks
that all open fds are set to close-on-exec and warns otherwise.
* dbus/dbus-transport-unix.c:
(_dbus_transport_new_for_domain_socket):
Call _dbus_fd_set_close_on_exec.
Diffstat (limited to 'dbus/dbus-message.c')
-rw-r--r-- | dbus/dbus-message.c | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/dbus/dbus-message.c b/dbus/dbus-message.c index aca8c2cb..fced9c72 100644 --- a/dbus/dbus-message.c +++ b/dbus/dbus-message.c @@ -817,6 +817,50 @@ dbus_message_new_reply (DBusMessage *original_message) } /** + * Creates a new message that is an error reply to a certain message. + * + * @param original_message the original message + * @param error_name the error name + * @param error_message the error message string + * @returns a new error message + */ +DBusMessage* +dbus_message_new_error_reply (DBusMessage *original_message, + const char *error_name, + const char *error_message) +{ + DBusMessage *message; + const char *sender; + + sender = get_string_field (original_message, + FIELD_SENDER, NULL); + + _dbus_assert (sender != NULL); + + message = dbus_message_new (sender, error_name); + + if (message == NULL) + return NULL; + + if (!_dbus_message_set_reply_serial (message, + _dbus_message_get_client_serial (original_message))) + { + dbus_message_unref (message); + return NULL; + } + + if (!dbus_message_append_string (message, error_message)) + { + dbus_message_unref (message); + return NULL; + } + + dbus_message_set_is_error (message, TRUE); + + return message; +} + +/** * Creates a new message that is an exact replica of the message * specified, except that its refcount is set to 1. * |