From: Yu Watanabe Date: Thu, 31 Oct 2024 19:02:54 +0000 (+0900) Subject: sd-varlink: suppress one log message when callback already successfully enqueued... X-Git-Tag: v257-rc1~70 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4d8e5fefae8b8f4da87d5d9af27b32c28b91108a;p=thirdparty%2Fsystemd.git sd-varlink: suppress one log message when callback already successfully enqueued an error response Follow-up for d2ebf5cc1d59e29139f06efaa3a9b2c184cdaa25. The detailed error response is already logged, hence not necessary to log again with the errno converted from the error response, which typically less informative, e.g. === varlink-26-26: Setting state idle-server varlink-26-26: Received message: {"method":"io.systemd.UserDatabase.GetUserRecord","parameters":{"service":""}} varlink-26-26: Changing state idle-server → processing-method varlink-26-26: Sending message: {"error":"io.systemd.UserDatabase.BadService","parameters":{}} varlink-26-26: Changing state processing-method → processed-method varlink-26-26: Callback for io.systemd.UserDatabase.GetUserRecord returned error: Invalid request descriptor varlink-26-26: Changing state processed-method → idle-server varlink-26-26: Got POLLHUP from socket. === --- diff --git a/src/libsystemd/sd-varlink/sd-varlink.c b/src/libsystemd/sd-varlink/sd-varlink.c index 73fcc71f867..9c9160fd4e4 100644 --- a/src/libsystemd/sd-varlink/sd-varlink.c +++ b/src/libsystemd/sd-varlink/sd-varlink.c @@ -1386,17 +1386,15 @@ static int varlink_dispatch_method(sd_varlink *v) { if (!invalid) { r = callback(v, parameters, flags, v->userdata); - if (r < 0) { + if (r < 0 && VARLINK_STATE_WANTS_REPLY(v->state)) { varlink_log_errno(v, r, "Callback for %s returned error: %m", method); /* We got an error back from the callback. Propagate it to the client if the * method call remains unanswered. */ - if (VARLINK_STATE_WANTS_REPLY(v->state)) { - r = sd_varlink_error_errno(v, r); - /* If we didn't manage to enqueue an error response, then fail the connection completely. */ - if (r < 0 && VARLINK_STATE_WANTS_REPLY(v->state)) - goto fail; - } + r = sd_varlink_error_errno(v, r); + /* If we didn't manage to enqueue an error response, then fail the connection completely. */ + if (r < 0 && VARLINK_STATE_WANTS_REPLY(v->state)) + goto fail; } } } else if (VARLINK_STATE_WANTS_REPLY(v->state)) {