diff options
author | Lennart Poettering <lennart@poettering.net> | 2014-01-12 10:56:40 +0800 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2014-01-12 10:56:40 +0800 |
commit | 441d56a12a90bbb5f6e58717a1e6b9bfe5c82efc (patch) | |
tree | b918813c99b8ff5d92312328151885bf2b3dfa5a | |
parent | 348ced909724a1331b85d57aede80a102a00e428 (diff) |
bus: properly handle EOF error conditions in proxyd
EOF is not an error so we should not print an error message about it.
-rw-r--r-- | src/bus-proxyd/bus-proxyd.c | 18 | ||||
-rw-r--r-- | src/libsystemd-bus/sd-bus.c | 24 |
2 files changed, 30 insertions, 12 deletions
diff --git a/src/bus-proxyd/bus-proxyd.c b/src/bus-proxyd/bus-proxyd.c index a14d7c822b..f4d6fab40c 100644 --- a/src/bus-proxyd/bus-proxyd.c +++ b/src/bus-proxyd/bus-proxyd.c @@ -608,8 +608,13 @@ int main(int argc, char *argv[]) { k = sd_bus_send(b, m, NULL); if (k < 0) { - r = k; - log_error("Failed to send message: %s", strerror(-r)); + if (k == -ECONNRESET) + r = 0; + else { + r = k; + log_error("Failed to send message: %s", strerror(-r)); + } + goto finish; } } @@ -653,8 +658,13 @@ int main(int argc, char *argv[]) { k = sd_bus_send(a, m, NULL); if (k < 0) { - r = k; - log_error("Failed to send message: %s", strerror(-r)); + if (r == -ECONNRESET) + r = 0; + else { + r = k; + log_error("Failed to send message: %s", strerror(-r)); + } + goto finish; } } diff --git a/src/libsystemd-bus/sd-bus.c b/src/libsystemd-bus/sd-bus.c index 7f3ecbf804..6bd1eaa81b 100644 --- a/src/libsystemd-bus/sd-bus.c +++ b/src/libsystemd-bus/sd-bus.c @@ -1499,7 +1499,7 @@ _public_ int sd_bus_send(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie) { if (r < 0) return r; - /* Remarshall if we have to. This will possible unref the + /* Remarshall if we have to. This will possibly unref the * message and place a replacement in m */ r = bus_remarshal_message(bus, &m); if (r < 0) @@ -1515,8 +1515,10 @@ _public_ int sd_bus_send(sd_bus *bus, sd_bus_message *_m, uint64_t *cookie) { r = bus_write_message(bus, m, &idx); if (r < 0) { - if (r == -EPIPE || r == -ENOTCONN || r == -ESHUTDOWN) + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); + return -ECONNRESET; + } return r; } else if (!bus->is_kernel && idx < BUS_MESSAGE_SIZE(m)) { @@ -1799,8 +1801,10 @@ _public_ int sd_bus_call( r = bus_read_message(bus); if (r < 0) { - if (r == -EPIPE || r == -ENOTCONN || r == -ESHUTDOWN) + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); + return -ECONNRESET; + } return r; } @@ -1826,8 +1830,10 @@ _public_ int sd_bus_call( r = dispatch_wqueue(bus); if (r < 0) { - if (r == -EPIPE || r == -ENOTCONN || r == -ESHUTDOWN) + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); + return -ECONNRESET; + } return r; } @@ -2325,7 +2331,7 @@ _public_ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { case BUS_OPENING: r = bus_socket_process_opening(bus); - if (r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); r = 1; } else if (r < 0) @@ -2336,7 +2342,7 @@ _public_ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { case BUS_AUTHENTICATING: r = bus_socket_process_authenticating(bus); - if (r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); r = 1; } else if (r < 0) @@ -2350,7 +2356,7 @@ _public_ int sd_bus_process(sd_bus *bus, sd_bus_message **ret) { case BUS_RUNNING: case BUS_HELLO: r = process_running(bus, ret); - if (r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); r = 1; @@ -2462,8 +2468,10 @@ _public_ int sd_bus_flush(sd_bus *bus) { for (;;) { r = dispatch_wqueue(bus); if (r < 0) { - if (r == -EPIPE || r == -ENOTCONN || r == -ESHUTDOWN) + if (r == -ENOTCONN || r == -ECONNRESET || r == -EPIPE || r == -ESHUTDOWN) { bus_enter_closing(bus); + return -ECONNRESET; + } return r; } |