diff options
author | Kay Sievers <kay@vrfy.org> | 2015-06-09 14:27:33 +0200 |
---|---|---|
committer | Kay Sievers <kay@vrfy.org> | 2015-06-11 10:52:46 +0200 |
commit | a095315b3c31f7a419baceac82c26c3c5ac0cd12 (patch) | |
tree | a5a70cf5b5430c0a6873311437b8345d7071f249 /src/libsystemd/sd-bus/bus-internal.c | |
parent | 37c47e5e5b8e47dd886ed6e8355b1203082b4a3e (diff) |
build-sys: split internal basic/ library from shared/
basic/ can be used by everything
cannot use anything outside of basic/
libsystemd/ can use basic/
cannot use shared/
shared/ can use libsystemd/
Diffstat (limited to 'src/libsystemd/sd-bus/bus-internal.c')
-rw-r--r-- | src/libsystemd/sd-bus/bus-internal.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/src/libsystemd/sd-bus/bus-internal.c b/src/libsystemd/sd-bus/bus-internal.c index 37793e48ed..fea796cd30 100644 --- a/src/libsystemd/sd-bus/bus-internal.c +++ b/src/libsystemd/sd-bus/bus-internal.c @@ -19,6 +19,7 @@ along with systemd; If not, see <http://www.gnu.org/licenses/>. ***/ +#include "bus-message.h" #include "bus-internal.h" bool object_path_is_valid(const char *p) { @@ -345,3 +346,28 @@ char *bus_address_escape(const char *v) { *b = 0; return r; } + +int bus_maybe_reply_error(sd_bus_message *m, int r, sd_bus_error *error) { + assert(m); + + if (r < 0) { + if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) + sd_bus_reply_method_errno(m, r, error); + + } else if (sd_bus_error_is_set(error)) { + if (m->header->type == SD_BUS_MESSAGE_METHOD_CALL) + sd_bus_reply_method_error(m, error); + } else + return r; + + log_debug("Failed to process message [type=%s sender=%s path=%s interface=%s member=%s signature=%s]: %s", + bus_message_type_to_string(m->header->type), + strna(m->sender), + strna(m->path), + strna(m->interface), + strna(m->member), + strna(m->root_container.signature), + bus_error_message(error, r)); + + return 1; +} |