[dovecot-cvs] dovecot/src/auth mech-digest-md5.c,1.5,1.6
cras at procontrol.fi
cras at procontrol.fi
Sun Feb 2 02:32:23 EET 2003
Update of /home/cvs/dovecot/src/auth
In directory danu:/tmp/cvs-serv2673
Modified Files:
mech-digest-md5.c
Log Message:
finally working
Index: mech-digest-md5.c
===================================================================
RCS file: /home/cvs/dovecot/src/auth/mech-digest-md5.c,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -d -r1.5 -r1.6
--- mech-digest-md5.c 2 Feb 2003 00:21:17 -0000 1.5
+++ mech-digest-md5.c 2 Feb 2003 00:32:21 -0000 1.6
@@ -297,8 +297,8 @@
return ret;
}
-static int auth_handle_response(struct digest_auth_request *auth, char *key, char *value,
- const char **error)
+static int auth_handle_response(struct digest_auth_request *auth,
+ char *key, char *value, const char **error)
{
int i;
@@ -460,8 +460,9 @@
return TRUE;
}
-static int parse_digest_response(struct digest_auth_request *auth, const char *data,
- size_t size, const char **error)
+static int parse_digest_response(struct digest_auth_request *auth,
+ const char *data, size_t size,
+ const char **error)
{
char *copy, *key, *value;
int failed;
@@ -525,14 +526,20 @@
{
struct digest_auth_request *auth =
(struct digest_auth_request *) request;
- int success;
+ struct auth_login_reply reply;
- success = verify_credentials(auth, result);
+ mech_init_login_reply(&reply);
+ reply.id = request->id;
- auth->authenticated = TRUE;
- mech_auth_finish(request, auth->rspauth,
- auth->rspauth == NULL ? 0 : strlen(auth->rspauth),
- success);
+ if (!verify_credentials(auth, result))
+ reply.result = AUTH_LOGIN_RESULT_FAILURE;
+ else {
+ reply.result = AUTH_LOGIN_RESULT_CONTINUE;
+ reply.data_size = strlen(auth->rspauth);
+ auth->authenticated = TRUE;
+ }
+
+ request->callback(&reply, auth->rspauth, request->conn);
}
static int
@@ -554,10 +561,7 @@
if (auth->authenticated) {
/* authentication is done, we were just waiting the last
word from client */
- void *data;
-
- data = mech_auth_success(&reply, auth_request, NULL, 0);
- callback(&reply, data, conn);
+ mech_auth_finish(auth_request, NULL, 0, TRUE);
return TRUE;
}
@@ -569,7 +573,8 @@
auth_request->user = p_strdup(auth_request->pool,
auth->username);
- auth_request->realm = p_strdup(auth_request->pool, auth->realm);
+ auth_request->realm =
+ p_strdup_empty(auth_request->pool, auth->realm);
passdb->lookup_credentials(&auth->auth_request,
PASSDB_CREDENTIALS_DIGEST_MD5,
More information about the dovecot-cvs
mailing list