[dovecot-cvs] dovecot/src/lib-auth auth-server-request.c,1.9,1.10
cras at procontrol.fi
cras at procontrol.fi
Sun May 30 07:50:08 EEST 2004
Update of /home/cvs/dovecot/src/lib-auth
In directory talvi:/tmp/cvs-serv22718/lib-auth
Modified Files:
auth-server-request.c
Log Message:
PLAIN auth fallbacking works now with initial responses
Index: auth-server-request.c
===================================================================
RCS file: /home/cvs/dovecot/src/lib-auth/auth-server-request.c,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -d -r1.9 -r1.10
--- a/auth-server-request.c 29 May 2004 21:40:30 -0000 1.9
+++ b/auth-server-request.c 30 May 2004 04:50:06 -0000 1.10
@@ -31,6 +31,44 @@
};
static int auth_server_send_new_request(struct auth_server_connection *conn,
+ struct auth_request *request);
+
+static struct auth_server_connection *
+get_next_plain_server(struct auth_server_connection *conn)
+{
+ conn = conn->next;
+ while (conn != NULL) {
+ if (conn->has_plain_mech)
+ return conn;
+ conn = conn->next;
+ }
+ return NULL;
+}
+
+static void
+auth_server_request_check_retry(struct auth_request *request,
+ const unsigned char *data, size_t data_size)
+{
+ if (strcmp(request->mech, "PLAIN") == 0 &&
+ request->plaintext_data == NULL && request->conn != NULL) {
+ request->next_conn = get_next_plain_server(request->conn);
+ if (request->next_conn != NULL) {
+ /* plaintext authentication - save the data so we can
+ try it for the next */
+ request->plaintext_data = i_malloc(data_size);
+ memcpy(request->plaintext_data, data, data_size);
+ request->plaintext_data_size = data_size;
+
+ hash_insert(request->next_conn->requests,
+ POINTER_CAST(request->id), request);
+ auth_server_send_new_request(request->next_conn,
+ request);
+ request->retrying = TRUE;
+ }
+ }
+}
+
+static int auth_server_send_new_request(struct auth_server_connection *conn,
struct auth_request *request)
{
struct auth_client_request_new auth_request;
@@ -76,6 +114,8 @@
return FALSE;
}
+ auth_server_request_check_retry(request, request->initial_resp_data,
+ request->initial_resp_size);
return TRUE;
}
@@ -99,18 +139,6 @@
}
}
-static struct auth_server_connection *
-get_next_plain_server(struct auth_server_connection *conn)
-{
- conn = conn->next;
- while (conn != NULL) {
- if (conn->has_plain_mech)
- return conn;
- conn = conn->next;
- }
- return NULL;
-}
-
void auth_server_request_handle_reply(struct auth_server_connection *conn,
struct auth_client_request_reply *reply,
const unsigned char *data)
@@ -255,23 +283,7 @@
{
auth_server_send_continue(request->conn, request, data, data_size);
- if (strcmp(request->mech, "PLAIN") == 0 &&
- request->plaintext_data == NULL && request->conn != NULL) {
- request->next_conn = get_next_plain_server(request->conn);
- if (request->next_conn != NULL) {
- /* plaintext authentication - save the data so we can
- try it for the next */
- request->plaintext_data = i_malloc(data_size);
- memcpy(request->plaintext_data, data, data_size);
- request->plaintext_data_size = data_size;
-
- hash_insert(request->next_conn->requests,
- POINTER_CAST(request->id), request);
- auth_server_send_new_request(request->next_conn,
- request);
- request->retrying = TRUE;
- }
- }
+ auth_server_request_check_retry(request, data, data_size);
}
void auth_client_request_abort(struct auth_request *request)
More information about the dovecot-cvs
mailing list