]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lib-master: Accept filter updates from stats by stats-client.
authorsergey.kitov <sergey.kitov@open-xchange.com>
Mon, 10 May 2021 13:39:21 +0000 (16:39 +0300)
committersergey.kitov <sergey.kitov@open-xchange.com>
Fri, 3 Sep 2021 12:44:32 +0000 (15:44 +0300)
src/lib-master/stats-client.c

index ae0976f3a4cfc45fd45b83844ae68d384e94f293..798a1c5b4b588ee3ef0e156c5ccce1493c4c2a9c 100644 (file)
@@ -63,28 +63,13 @@ stats_client_handshake(struct stats_client *client, const char *const *args)
        client->handshake_received_at_least_once = TRUE;
        if (client->ioloop != NULL)
                io_loop_stop(client->ioloop);
-       if (filter == NULL) {
-               /* stats process wants nothing to be sent to it */
-               return 1;
-       }
 
-       if (client->filter != NULL) {
-               /* Filter is already set. It becomes a bit complicated to
-                  change it. Since it's most likely exactly the same filter
-                  anyway, just keep the old one. */
-               event_filter_unref(&filter);
-               return 1;
-       }
+       if (filter == NULL)
+               filter = event_filter_create();
 
+       event_filter_unref(&client->filter);
        client->filter = filter;
-       if (event_get_global_debug_send_filter() != NULL) {
-               /* merge into the global debug send filter */
-               event_filter_merge(event_get_global_debug_send_filter(),
-                                  client->filter);
-       } else {
-               /* no global filter yet - use this */
-               event_set_global_debug_send_filter(client->filter);
-       }
+       event_set_global_debug_send_filter(client->filter);
        return 1;
 }
 
@@ -93,12 +78,8 @@ stats_client_input_args(struct connection *conn, const char *const *args)
 {
        struct stats_client *client = (struct stats_client *)conn;
 
-       if (!client->handshaked)
-               return stats_client_handshake(client, args);
+       return stats_client_handshake(client, args);
 
-       i_error("stats: Received unexpected input: %s",
-               t_strarray_join(args, "\t"));
-       return 0;
 }
 
 static void stats_client_reconnect(struct stats_client *client)