]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: If stats-writer errors are silenced, silence also EACCES+EPERM errors
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Thu, 28 Nov 2024 13:27:45 +0000 (15:27 +0200)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Fri, 17 Jan 2025 08:40:01 +0000 (10:40 +0200)
This makes standalone tools (e.g. doveadm) not log warnings about not being
able to connect to stats-writer socket.

src/lib-master/master-service.c
src/lib-master/stats-client.c
src/lib-master/stats-client.h

index 6a1555053aa21106ad9f92f8fe6f8eb755311b23..2363032cfb4e4e604e8fd41bcf91cf03ba8b0ec1 100644 (file)
@@ -807,15 +807,14 @@ void master_service_init_log_with_pid(struct master_service *service)
 }
 
 void master_service_init_stats_client(struct master_service *service,
-                                     bool silent_notfound_errors)
+                                     bool silent_errors)
 {
        if (service->stats_client == NULL &&
            service->set->stats_writer_socket_path[0] != '\0') T_BEGIN {
                const char *path = t_strdup_printf("%s/%s",
                        service->set->base_dir,
                        service->set->stats_writer_socket_path);
-               service->stats_client =
-                       stats_client_init(path, silent_notfound_errors);
+               service->stats_client = stats_client_init(path, silent_errors);
        } T_END;
 }
 
index d54f9e3f018e4476fe871d9f060d81bfae9c3d79..060f3831dff7b1fac31db32716611bd5395abea3 100644 (file)
@@ -27,7 +27,7 @@ struct stats_client {
        struct timeval wait_started;
        bool handshaked;
        bool handshake_received_at_least_once;
-       bool silent_notfound_errors;
+       bool silent_errors;
 };
 
 static struct connection_list *stats_clients;
@@ -383,15 +383,15 @@ static void stats_client_connect(struct stats_client *client)
                stats_client_send_registered_categories(client);
                if (!client->handshake_received_at_least_once)
                        stats_client_wait(client, STATS_CLIENT_HANDSHAKE_WAIT);
-       } else if (!client->silent_notfound_errors ||
-                  (errno != ENOENT && errno != ECONNREFUSED)) {
+       } else if (!client->silent_errors ||
+                  (errno != ENOENT && errno != ECONNREFUSED &&
+                   !ENOACCESS(errno))) {
                e_error(client->conn.event,
                        "net_connect_unix(%s) failed: %m", client->conn.name);
        }
 }
 
-struct stats_client *
-stats_client_init(const char *path, bool silent_notfound_errors)
+struct stats_client *stats_client_init(const char *path, bool silent_errors)
 {
        struct stats_client *client;
 
@@ -399,7 +399,7 @@ stats_client_init(const char *path, bool silent_notfound_errors)
                stats_global_init();
 
        client = i_new(struct stats_client, 1);
-       client->silent_notfound_errors = silent_notfound_errors;
+       client->silent_errors = silent_errors;
        connection_init_client_unix(stats_clients, &client->conn, path);
        stats_client_connect(client);
        return client;
index ceda8ab74af5546050185fec6649ddf8af0def46..dd028426891a80fadbfb608541481525406a0cab 100644 (file)
@@ -1,8 +1,7 @@
 #ifndef STATS_CLIENT_H
 #define STATS_CLIENT_H
 
-struct stats_client *
-stats_client_init(const char *path, bool silent_notfound_errors);
+struct stats_client *stats_client_init(const char *path, bool silent_errors);
 void stats_client_deinit(struct stats_client **client);
 
 struct stats_client *