diff options
author | Lennart Poettering <lennart@poettering.net> | 2015-02-13 16:11:45 +0100 |
---|---|---|
committer | Lennart Poettering <lennart@poettering.net> | 2015-02-13 17:18:35 +0100 |
commit | 557b5d4a94967198b3181fcb83879d4569cbf456 (patch) | |
tree | c3b67fcaa8098cac4fc9980819765ddf0459edfa /src/bus-proxyd | |
parent | a8ba6cd15d3a5edf1f9fbb4fd08dc428c3939072 (diff) |
bus-proxy: also consider ENOTCONN a clean termination condition
Sometimes, when we try to reply to messages we don't check return
values. This means we might miss a ECONNRESET, and will get a ENOTCONN
on next command. Treat both the same hence.
Diffstat (limited to 'src/bus-proxyd')
-rw-r--r-- | src/bus-proxyd/proxy.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/bus-proxyd/proxy.c b/src/bus-proxyd/proxy.c index a07c4036d..a34c43109 100644 --- a/src/bus-proxyd/proxy.c +++ b/src/bus-proxyd/proxy.c @@ -673,7 +673,7 @@ static int proxy_process_destination_to_local(Proxy *p) { assert(p); r = sd_bus_process(p->destination_bus, &m); - if (r == -ECONNRESET) /* Treat 'connection reset by peer' as clean exit condition */ + if (r == -ECONNRESET || r == -ENOTCONN) /* Treat 'connection reset by peer' as clean exit condition */ return r; if (r < 0) { log_error_errno(r, "Failed to process destination bus: %m"); @@ -704,7 +704,7 @@ static int proxy_process_destination_to_local(Proxy *p) { r = sd_bus_send(p->local_bus, m, NULL); if (r < 0) { - if (r == -ECONNRESET) + if (r == -ECONNRESET || r == -ENOTCONN) return r; /* If the peer tries to send a reply and it is @@ -739,7 +739,7 @@ static int proxy_process_local_to_destination(Proxy *p) { assert(p); r = sd_bus_process(p->local_bus, &m); - if (r == -ECONNRESET) /* Treat 'connection reset by peer' as clean exit condition */ + if (r == -ECONNRESET || r == -ENOTCONN) /* Treat 'connection reset by peer' as clean exit condition */ return r; if (r < 0) { log_error_errno(r, "Failed to process local bus: %m"); @@ -777,7 +777,7 @@ static int proxy_process_local_to_destination(Proxy *p) { r = sd_bus_send(p->destination_bus, m, NULL); if (r < 0) { - if (r == -ECONNRESET) + if (r == -ECONNRESET || r == -ENOTCONN) return r; /* The name database changed since the policy check, hence let's check again */ @@ -810,7 +810,7 @@ int proxy_run(Proxy *p) { if (p->got_hello) { /* Read messages from bus, to pass them on to our client */ r = proxy_process_destination_to_local(p); - if (r == -ECONNRESET) + if (r == -ECONNRESET || r == -ENOTCONN) return 0; if (r < 0) return r; @@ -820,7 +820,7 @@ int proxy_run(Proxy *p) { /* Read messages from our client, to pass them on to the bus */ r = proxy_process_local_to_destination(p); - if (r == -ECONNRESET) + if (r == -ECONNRESET || r == -ENOTCONN) return 0; if (r < 0) return r; |