From: Timo Sirainen Date: Thu, 28 Nov 2024 13:27:45 +0000 (+0200) Subject: lib-master: If stats-writer errors are silenced, silence also EACCES+EPERM errors X-Git-Tag: 2.4.1~456 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=4ee1b717baabc1876dc58bd2406646b0b631819a;p=thirdparty%2Fdovecot%2Fcore.git lib-master: If stats-writer errors are silenced, silence also EACCES+EPERM errors This makes standalone tools (e.g. doveadm) not log warnings about not being able to connect to stats-writer socket. --- diff --git a/src/lib-master/master-service.c b/src/lib-master/master-service.c index 6a1555053a..2363032cfb 100644 --- a/src/lib-master/master-service.c +++ b/src/lib-master/master-service.c @@ -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; } diff --git a/src/lib-master/stats-client.c b/src/lib-master/stats-client.c index d54f9e3f01..060f3831df 100644 --- a/src/lib-master/stats-client.c +++ b/src/lib-master/stats-client.c @@ -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; diff --git a/src/lib-master/stats-client.h b/src/lib-master/stats-client.h index ceda8ab74a..dd02842689 100644 --- a/src/lib-master/stats-client.h +++ b/src/lib-master/stats-client.h @@ -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 *