]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
doveadm-server: Error message logging improvements.
authorTimo Sirainen <tss@iki.fi>
Tue, 6 Aug 2013 14:06:50 +0000 (17:06 +0300)
committerTimo Sirainen <tss@iki.fi>
Tue, 6 Aug 2013 14:06:50 +0000 (17:06 +0300)
src/doveadm/client-connection.c
src/doveadm/doveadm-mail-server.c

index e740abc53ab5c76084feb711aa3958fbdda79c4a..1008a5f1095f3f2a2dee610ba4f8a7874f4a19b1 100644 (file)
@@ -281,6 +281,19 @@ client_connection_authenticate(struct client_connection *conn)
        return 1;
 }
 
+static void client_log_disconnect_error(struct client_connection *conn)
+{
+       const char *error;
+
+       error = conn->ssl_iostream == NULL ? NULL :
+               ssl_iostream_get_last_error(conn->ssl_iostream);
+       if (error == NULL) {
+               error = conn->input->stream_errno == 0 ? "EOF" :
+                       strerror(conn->input->stream_errno);
+       }
+       i_error("doveadm client disconnected before handshake: %s", error);
+}
+
 static void client_connection_input(struct client_connection *conn)
 {
        const char *line;
@@ -289,8 +302,10 @@ static void client_connection_input(struct client_connection *conn)
 
        if (!conn->handshaked) {
                if ((line = i_stream_read_next_line(conn->input)) == NULL) {
-                       if (conn->input->eof || conn->input->stream_errno != 0)
+                       if (conn->input->eof || conn->input->stream_errno != 0) {
+                               client_log_disconnect_error(conn);
                                client_connection_destroy(&conn);
+                       }
                        return;
                }
 
index dab66666b3b938470ff09babad391faffdba96c8..828a53580d6c254277731fcb6adec1c9fe8305c8 100644 (file)
@@ -96,8 +96,8 @@ static void doveadm_cmd_callback(int exit_code, const char *error,
        case 0:
                break;
        case SERVER_EXIT_CODE_DISCONNECTED:
-               i_error("%s: Internal failure for %s: %s",
-                       server->name, username, error);
+               i_error("%s: Command %s failed for %s: %s",
+                       server->name, cmd_ctx->cmd->name, username, error);
                internal_failure = TRUE;
                master_service_stop(master_service);
                return;