[dovecot-cvs] dovecot/src/lib-auth auth-server-request.c,1.4,1.5

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


Update of /home/cvs/dovecot/src/lib-auth
In directory danu:/tmp/cvs-serv15227/lib-auth

Modified Files:
	auth-server-request.c 
Log Message:
fixes. maybe it works now.



Index: auth-server-request.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-auth/auth-server-request.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -d -r1.4 -r1.5
--- auth-server-request.c	22 Aug 2003 06:37:57 -0000	1.4
+++ auth-server-request.c	22 Aug 2003 18:57:00 -0000	1.5
@@ -147,17 +147,28 @@
 }
 
 static void request_hash_remove(void *key __attr_unused__, void *value,
-				void *context __attr_unused__)
+				void *context)
 {
 	struct auth_request *request = value;
+        struct auth_server_connection *conn = context;
 
-	request->callback(request, NULL, NULL, request->context);
-	request->conn = NULL;
+	if (request->conn == conn) {
+		if (request->next_conn == NULL) {
+			request->callback(request, NULL, NULL,
+					  request->context);
+			request->conn = NULL;
+		} else {
+			request->conn = request->next_conn;
+			request->next_conn = NULL;
+		}
+	} else {
+		request->next_conn = NULL;
+	}
 }
 
 void auth_server_requests_remove_all(struct auth_server_connection *conn)
 {
-	hash_foreach(conn->requests, request_hash_remove, NULL);
+	hash_foreach(conn->requests, request_hash_remove, conn);
 }
 
 struct auth_request *
@@ -223,6 +234,8 @@
 	hash_remove(request->conn->requests, id);
 	if (request->next_conn != NULL)
 		hash_remove(request->next_conn->requests, id);
+
+	request->callback(request, NULL, NULL, request->context);
 
 	i_free(request->plaintext_data);
 	i_free(request);



More information about the dovecot-cvs mailing list