summaryrefslogtreecommitdiffstats
path: root/dbus/dbus-message.c
diff options
context:
space:
mode:
authorAnders Carlsson <andersca@codefactory.se>2003-02-16 10:00:37 +0000
committerAnders Carlsson <andersca@codefactory.se>2003-02-16 10:00:37 +0000
commitf116b1282f8482dff6dc797f64270d95f79b53a3 (patch)
treed56ba5a2f6cb8797b54b079d5b754abac5cd14bc /dbus/dbus-message.c
parentac5183eafc6bd77bec094c3ba103701a4540f08d (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.c44
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.
*