]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
director: Use t_strsplit_tabescaped_inplace() for director connection input
authorTimo Sirainen <timo.sirainen@dovecot.fi>
Fri, 3 Nov 2017 23:48:41 +0000 (01:48 +0200)
committerAki Tuomi <aki.tuomi@dovecot.fi>
Mon, 6 Nov 2017 07:34:31 +0000 (09:34 +0200)
src/director/director-connection.c

index 49f5f06f193773d4886655d48b0afcc7a91894f9..8ed8641c6c4779bda1289ccfce70514b0874b0cc 100644 (file)
@@ -120,7 +120,7 @@ struct director_connection {
        struct director_user_iter *user_iter;
 
        /* set during command execution */
-       const char *cur_cmd, *cur_line;
+       const char *cur_cmd, *const *cur_args;
 
        bool in:1;
        bool connected:1;
@@ -154,7 +154,8 @@ director_cmd_error(struct director_connection *conn, const char *fmt, ...)
 
        va_start(args, fmt);
        i_error("director(%s): Command %s: %s (input: %s)", conn->name,
-               conn->cur_cmd, t_strdup_vprintf(fmt, args), conn->cur_line);
+               conn->cur_cmd, t_strdup_vprintf(fmt, args),
+               t_strarray_join(conn->cur_args, "\t"));
        va_end(args);
 
        if (conn->host != NULL)
@@ -1791,25 +1792,25 @@ director_connection_handle_cmd(struct director_connection *conn,
 
 static bool
 director_connection_handle_line(struct director_connection *conn,
-                               const char *line)
+                               char *line)
 {
        const char *cmd, *const *args;
        bool ret;
 
        dir_debug("input: %s: %s", conn->name, line);
 
-       args = t_strsplit_tabescaped(line);
-       cmd = args[0]; args++;
+       args = t_strsplit_tabescaped_inplace(line);
+       cmd = args[0];
        if (cmd == NULL) {
                director_cmd_error(conn, "Received empty line");
                return FALSE;
        }
 
        conn->cur_cmd = cmd;
-       conn->cur_line = line;
-       ret = director_connection_handle_cmd(conn, cmd, args);
+       conn->cur_args = args;
+       ret = director_connection_handle_cmd(conn, cmd, args+1);
        conn->cur_cmd = NULL;
-       conn->cur_line = NULL;
+       conn->cur_args = NULL;
        return ret;
 }