]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm-server: tcp: Cleaned up doveadm_server_log_handler().
authorStephan Bosch <stephan.bosch@dovecot.fi>
Sat, 7 Oct 2017 14:55:01 +0000 (16:55 +0200)
committerStephan Bosch <stephan.bosch@dovecot.fi>
Tue, 24 Oct 2017 20:29:19 +0000 (22:29 +0200)
src/doveadm/client-connection-tcp.c

index f0e7070afb468dd0ef74d50369c99d613fb35806..6f719bdb4513f4d5df1ba90fc98d5be7c3f8d0ae 100644 (file)
@@ -30,40 +30,47 @@ static failure_callback_t *orig_info_callback, *orig_debug_callback = NULL;
 
 static bool log_recursing = FALSE;
 
-
 static void ATTR_FORMAT(2, 0)
 doveadm_server_log_handler(const struct failure_context *ctx,
                           const char *format, va_list args)
 {
        if (!log_recursing && doveadm_client != NULL &&
            doveadm_client->log_out != NULL) T_BEGIN {
+               struct ostream *log_out = doveadm_client->log_out;
+               char c;
+               const char *ptr, *start;
+               bool corked;
+               va_list va;
+
                /* prevent re-entering this code if
                   any of the following code causes logging */
                log_recursing = TRUE;
-               char c = doveadm_log_type_to_char(ctx->type);
-               const char *ptr,*start;
-               bool corked = o_stream_is_corked(doveadm_client->log_out);
-               va_list va;
+
+               c = doveadm_log_type_to_char(ctx->type);
+               corked = o_stream_is_corked(log_out);
+
                va_copy(va, args);
                string_t *str = t_str_new(128);
                str_vprintfa(str, format, va);
                va_end(va);
+
                start = str_c(str);
                if (!corked)
-                       o_stream_cork(doveadm_client->log_out);
+                       o_stream_cork(log_out);
                while((ptr = strchr(start, '\n'))!=NULL) {
-                       o_stream_nsend(doveadm_client->log_out, &c, 1);
-                       o_stream_nsend(doveadm_client->log_out, start, ptr-start+1);
+                       o_stream_nsend(log_out, &c, 1);
+                       o_stream_nsend(log_out, start, ptr-start+1);
                        str_delete(str, 0, ptr-start+1);
                }
                if (str->used > 0) {
-                       o_stream_nsend(doveadm_client->log_out, &c, 1);
-                       o_stream_nsend(doveadm_client->log_out, str->data, str->used);
-                       o_stream_nsend(doveadm_client->log_out, "\n", 1);
+                       o_stream_nsend(log_out, &c, 1);
+                       o_stream_nsend(log_out, str->data, str->used);
+                       o_stream_nsend(log_out, "\n", 1);
                }
-               o_stream_uncork(doveadm_client->log_out);
+               o_stream_uncork(log_out);
                if (corked)
-                       o_stream_cork(doveadm_client->log_out);
+                       o_stream_cork(log_out);
+
                log_recursing = FALSE;
        } T_END;