dovecot-2.0: lib-master: Log an error if login client disconnect...

dovecot at dovecot.org dovecot at dovecot.org
Wed Apr 7 12:06:15 EEST 2010


details:   http://hg.dovecot.org/dovecot-2.0/rev/5074e30d72d4
changeset: 11108:5074e30d72d4
user:      Timo Sirainen <tss at iki.fi>
date:      Wed Apr 07 12:04:42 2010 +0300
description:
lib-master: Log an error if login client disconnects too early.

diffstat:

 src/lib-master/master-login.c |  8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diffs (32 lines):

diff -r c0fe14f76760 -r 5074e30d72d4 src/lib-master/master-login.c
--- a/src/lib-master/master-login.c	Wed Apr 07 11:58:00 2010 +0300
+++ b/src/lib-master/master-login.c	Wed Apr 07 12:04:42 2010 +0300
@@ -19,6 +19,8 @@
 
 #define master_login_conn_is_closed(conn) \
 	((conn)->fd == -1)
+#define master_login_conn_has_clients(conn) \
+	((conn)->refcount > 1)
 
 struct master_login_connection {
 	struct master_login_connection *prev, *next;
@@ -110,6 +112,8 @@
 	if (ret != sizeof(*req_r)) {
 		if (ret == 0) {
 			/* disconnected */
+			if (master_login_conn_has_clients(conn))
+				i_error("Login client disconnected too early");
 		} else if (ret > 0) {
 			/* request wasn't fully read */
 			i_error("fd_read() partial input (%d/%d)",
@@ -133,6 +137,10 @@
 		if (ret != (ssize_t)req_r->data_size) {
 			if (ret == 0) {
 				/* disconnected */
+				if (master_login_conn_has_clients(conn)) {
+					i_error("Login client disconnected too early "
+						"(while reading data)");
+				}
 			} else if (ret > 0) {
 				/* request wasn't fully read */
 				i_error("Data read partially %d/%u",


More information about the dovecot-cvs mailing list