changeset 12669:ce7b1fa63f2f

imapc: Added more debugging output with mail_debug=yes
author Timo Sirainen <tss@iki.fi>
date Sat, 19 Feb 2011 16:42:45 +0200
parents 4363f0b68031
children bd780e7bdba6
files src/lib-storage/index/imapc/imapc-client.c src/lib-storage/index/imapc/imapc-client.h src/lib-storage/index/imapc/imapc-connection.c src/lib-storage/index/imapc/imapc-storage.c
diffstat 4 files changed, 45 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/lib-storage/index/imapc/imapc-client.c	Thu Feb 17 18:02:45 2011 +0200
+++ b/src/lib-storage/index/imapc/imapc-client.c	Sat Feb 19 16:42:45 2011 +0200
@@ -44,6 +44,7 @@
 	client = p_new(pool, struct imapc_client, 1);
 	client->pool = pool;
 
+	client->set.debug = set->debug;
 	client->set.host = p_strdup(pool, set->host);
 	client->set.port = set->port;
 	client->set.master_user = p_strdup(pool, set->master_user);
--- a/src/lib-storage/index/imapc/imapc-client.h	Thu Feb 17 18:02:45 2011 +0200
+++ b/src/lib-storage/index/imapc/imapc-client.h	Sat Feb 19 16:42:45 2011 +0200
@@ -44,6 +44,8 @@
 
 	enum imapc_client_ssl_mode ssl_mode;
 	const char *ssl_ca_dir;
+
+	bool debug;
 };
 
 struct imapc_command_reply {
--- a/src/lib-storage/index/imapc/imapc-connection.c	Thu Feb 17 18:02:45 2011 +0200
+++ b/src/lib-storage/index/imapc/imapc-connection.c	Sat Feb 19 16:42:45 2011 +0200
@@ -214,6 +214,9 @@
 	if (conn->fd == -1)
 		return;
 
+	if (conn->client->set.debug)
+		i_debug("imapc(%s): Disconnected", conn->name);
+
 	imapc_connection_lfiles_free(conn);
 	imapc_connection_literal_reset(&conn->literal);
 	if (conn->to != NULL)
@@ -380,6 +383,11 @@
 	const char *const *tmp;
 	unsigned int i;
 
+	if (conn->client->set.debug) {
+		i_debug("imapc(%s): Server capabilities: %s",
+			conn->name, value);
+	}
+
 	conn->capabilities = 0;
 	if (conn->capabilities_list != NULL)
 		p_strsplit_free(default_pool, conn->capabilities_list);
@@ -526,6 +534,9 @@
 		return;
 	}
 
+	if (conn->client->set.debug)
+		i_debug("imapc(%s): Authenticated successfully", conn->name);
+
 	timeout_remove(&conn->to);
 	imapc_connection_set_state(conn, IMAPC_CONNECTION_STATE_DONE);
 }
@@ -558,6 +569,16 @@
 	const struct imapc_client_settings *set = &conn->client->set;
 	const char *cmd;
 
+	if (conn->client->set.debug) {
+		if (set->master_user == NULL) {
+			i_debug("imapc(%s): Authenticating as %s",
+				conn->name, set->username);
+		} else {
+			i_debug("imapc(%s): Authenticating as %s for user %s",
+				conn->name, set->master_user, set->username);
+		}
+	}
+
 	if ((set->master_user == NULL &&
 	     need_literal(set->username) && need_literal(set->password)) ||
 	    (conn->capabilities & IMAPC_CAPABILITY_AUTH_PLAIN) == 0) {
@@ -912,8 +933,13 @@
 {
 	struct imapc_connection *conn = context;
 
-	if (ssl_iostream_has_valid_client_cert(conn->ssl_iostream))
+	if (ssl_iostream_has_valid_client_cert(conn->ssl_iostream)) {
+		if (conn->client->set.debug) {
+			i_debug("imapc(%s): SSL handshake successful",
+				conn->name);
+		}
 		return 0;
+	}
 
 	if (!ssl_iostream_has_broken_client_cert(conn->ssl_iostream)) {
 		i_error("imapc(%s): SSL certificate not received", conn->name);
@@ -940,6 +966,9 @@
 	ssl_set.verify_remote_cert = TRUE;
 	ssl_set.require_valid_cert = TRUE;
 
+	if (conn->client->set.debug)
+		i_debug("imapc(%s): Starting SSL handshake", conn->name);
+
 	source = t_strdup_printf("imapc(%s): ", conn->name);
 	if (io_stream_create_ssl(conn->client->ssl_ctx, source, &ssl_set,
 				 &conn->input, &conn->output,
@@ -1003,11 +1032,12 @@
 
 static void imapc_connection_connect_next_ip(struct imapc_connection *conn)
 {
+	const struct ip_addr *ip;
 	int fd;
 
 	conn->prev_connect_idx = (conn->prev_connect_idx+1) % conn->ips_count;
-	fd = net_connect_ip(&conn->ips[conn->prev_connect_idx],
-			    conn->client->set.port, NULL);
+	ip = &conn->ips[conn->prev_connect_idx];
+	fd = net_connect_ip(ip, conn->client->set.port, NULL);
 	if (fd == -1) {
 		imapc_connection_set_state(conn,
 			IMAPC_CONNECTION_STATE_DISCONNECTED);
@@ -1020,6 +1050,10 @@
 	conn->parser = imap_parser_create(conn->input, NULL, (size_t)-1);
 	conn->to = timeout_add(IMAPC_CONNECT_TIMEOUT_MSECS,
 			       imapc_connection_timeout, conn);
+	if (conn->client->set.debug) {
+		i_debug("imapc(%s): Connecting to %s:%u", conn->name,
+			net_ip2addr(ip), conn->client->set.port);
+	}
 }
 
 static void
@@ -1052,6 +1086,9 @@
 	if (conn->fd != -1)
 		return;
 
+	if (conn->client->set.debug)
+		i_debug("imapc(%s): Looking up IP address", conn->name);
+
 	memset(&dns_set, 0, sizeof(dns_set));
 	dns_set.dns_client_socket_path =
 		conn->client->set.dns_client_socket_path;
--- a/src/lib-storage/index/imapc/imapc-storage.c	Thu Feb 17 18:02:45 2011 +0200
+++ b/src/lib-storage/index/imapc/imapc-storage.c	Sat Feb 19 16:42:45 2011 +0200
@@ -193,6 +193,8 @@
 	set.dns_client_socket_path =
 		t_strconcat(_storage->user->set->base_dir, "/",
 			    DNS_CLIENT_SOCKET_NAME, NULL);
+	set.debug = _storage->set->mail_debug;
+
 	str = t_str_new(128);
 	mail_user_set_get_temp_prefix(str, _storage->user->set);
 	set.temp_path_prefix = str_c(str);