[dovecot-cvs] dovecot/src/imap-login client-authenticate.c,1.9,1.10 client.c,1.17,1.18 client.h,1.5,1.6

cras at procontrol.fi cras at procontrol.fi
Fri Aug 22 22:57:02 EEST 2003


Update of /home/cvs/dovecot/src/imap-login
In directory danu:/tmp/cvs-serv15227/imap-login

Modified Files:
	client-authenticate.c client.c client.h 
Log Message:
fixes. maybe it works now.



Index: client-authenticate.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap-login/client-authenticate.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- client-authenticate.c	22 Aug 2003 02:42:13 -0000	1.9
+++ client-authenticate.c	22 Aug 2003 18:56:59 -0000	1.10
@@ -80,6 +80,8 @@
 		io_remove(client->common.io);
 	client->common.io = client->common.fd == -1 ? NULL :
 		io_add(client->common.fd, IO_READ, client_input, client);
+
+	client_unref(client);
 }
 
 static void master_callback(struct client *_client, int success)
@@ -146,6 +148,7 @@
 		   disconnect the client. */
                 client->authenticating = FALSE;
 		client_send_tagline(client, "OK Logged in.");
+		client_unref(client);
 	}
 }
 
@@ -181,6 +184,7 @@
 	buffer_append_c(client->plain_login, '\0');
 	buffer_append(client->plain_login, pass, strlen(pass));
 
+	client_ref(client);
 	client->common.auth_request =
 		auth_client_request_new(auth_client, AUTH_MECH_PLAIN,
 					AUTH_PROTOCOL_IMAP, login_callback,
@@ -188,6 +192,7 @@
 	if (client->common.auth_request == NULL) {
 		client_send_tagline(client, t_strconcat(
 			"NO Login failed: ", error, NULL));
+		client_unref(client);
 		return TRUE;
 	}
 
@@ -224,6 +229,7 @@
 		   disconnect the client. */
                 client->authenticating = FALSE;
 		client_send_tagline(client, "OK Logged in.");
+		client_unref(client);
 	}
 }
 
@@ -304,6 +310,7 @@
 		return TRUE;
 	}
 
+	client_ref(client);
 	client->common.auth_request =
 		auth_client_request_new(auth_client, mech->mech,
 					AUTH_PROTOCOL_IMAP,
@@ -319,6 +326,7 @@
 	} else {
 		client_send_tagline(client, t_strconcat(
 			"NO Authentication failed: ", error, NULL));
+		client_unref(client);
 	}
 
 	return TRUE;

Index: client.c
===================================================================
RCS file: /home/cvs/dovecot/src/imap-login/client.c,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -d -r1.17 -r1.18
--- client.c	22 Aug 2003 02:42:13 -0000	1.17
+++ client.c	22 Aug 2003 18:56:59 -0000	1.18
@@ -41,8 +41,6 @@
 static struct hash_table *clients;
 static struct timeout *to_idle;
 
-static int client_unref(struct imap_client *client);
-
 static void client_set_title(struct imap_client *client)
 {
 	const char *addr;
@@ -286,7 +284,7 @@
 		return;
 	}
 
-	client->refcount++;
+	client_ref(client);
 
 	o_stream_cork(client->output);
 	while (client_handle_input(client)) ;
@@ -409,7 +407,12 @@
 	client_unref(client);
 }
 
-static int client_unref(struct imap_client *client)
+void client_ref(struct imap_client *client)
+{
+	client->refcount++;
+}
+
+int client_unref(struct imap_client *client)
 {
 	if (--client->refcount > 0)
 		return TRUE;

Index: client.h
===================================================================
RCS file: /home/cvs/dovecot/src/imap-login/client.h,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- client.h	22 Aug 2003 02:42:13 -0000	1.5
+++ client.h	22 Aug 2003 18:56:59 -0000	1.6
@@ -40,6 +40,9 @@
 int client_read(struct imap_client *client);
 void client_input(void *context);
 
+void client_ref(struct imap_client *client);
+int client_unref(struct imap_client *client);
+
 void clients_init(void);
 void clients_deinit(void);
 



More information about the dovecot-cvs mailing list