]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm: Split off server_connection_input_cmd_error()
authorTimo Sirainen <timo.sirainen@open-xchange.com>
Mon, 14 Jun 2021 15:05:19 +0000 (18:05 +0300)
committerAki Tuomi <aki.tuomi@open-xchange.com>
Mon, 17 Jan 2022 11:52:09 +0000 (13:52 +0200)
src/doveadm/server-connection.c

index 6a222a8b2c5cc5ddd72e8bf17c87c4f76869d861..056584bd1cf8fd8d05adae2e8eb858597fab2276 100644 (file)
@@ -422,6 +422,22 @@ static void server_connection_input(struct server_connection *conn)
        while (server_connection_input_one(conn)) ;
 }
 
+static void
+server_connection_input_cmd_error(struct server_connection *conn,
+                                 const char *line)
+{
+       struct doveadm_server_reply reply = {
+               .exit_code = doveadm_str_to_exit_code(line),
+               .error = line,
+       };
+       if (reply.exit_code == DOVEADM_EX_UNKNOWN &&
+           str_to_int(line, &reply.exit_code) < 0) {
+               /* old doveadm-server */
+               reply.exit_code = EX_TEMPFAIL;
+       }
+       server_connection_callback(conn, &reply);
+}
+
 static bool server_connection_input_one(struct server_connection *conn)
 {
        const unsigned char *data;
@@ -458,17 +474,7 @@ static bool server_connection_input_one(struct server_connection *conn)
                        };
                        server_connection_callback(conn, &reply);
                } else if (line[0] == '-') {
-                       line++;
-                       struct doveadm_server_reply reply = {
-                               .exit_code = doveadm_str_to_exit_code(line),
-                               .error = line,
-                       };
-                       if (reply.exit_code == DOVEADM_EX_UNKNOWN &&
-                           str_to_int(line, &reply.exit_code) < 0) {
-                               /* old doveadm-server */
-                               reply.exit_code = EX_TEMPFAIL;
-                       }
-                       server_connection_callback(conn, &reply);
+                       server_connection_input_cmd_error(conn, line+1);
                } else {
                        i_error("doveadm server sent broken input "
                                "(expected cmd reply): %s", line);