summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLennart Poettering <lennart@poettering.net>2014-01-12 10:56:40 +0800
committerLennart Poettering <lennart@poettering.net>2014-01-12 10:56:40 +0800
commit441d56a12a90bbb5f6e58717a1e6b9bfe5c82efc (patch)
treeb918813c99b8ff5d92312328151885bf2b3dfa5a
parent348ced909724a1331b85d57aede80a102a00e428 (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.c18
-rw-r--r--src/libsystemd-bus/sd-bus.c24
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;
}