diff --git a/src/managesieve-login/client-authenticate.c b/src/managesieve-login/client-authenticate.c
index b342f4a067fb079fd19f847cac4b27dcbb97d664..7dfcf70098ea6ab3616013680e93d33e3782603f 100644
--- a/src/managesieve-login/client-authenticate.c
+++ b/src/managesieve-login/client-authenticate.c
@@ -242,7 +242,7 @@ managesieve_client_auth_read_response(struct managesieve_client *msieve_client,
 	return 1;
 }
 
-void managesieve_client_auth_parse_response(struct client *client)
+bool managesieve_client_auth_parse_response(struct client *client)
 {
 	struct managesieve_client *msieve_client =
 		(struct managesieve_client *)client;
@@ -254,20 +254,11 @@ void managesieve_client_auth_parse_response(struct client *client)
 	if (ret < 0) {
 		if (error != NULL)
 			client_auth_fail(client, error);
-		return;
+		return FALSE;
 	}
 	if (ret == 0)
-		return;
-
-	if (strcmp(str_c(client->auth_response), "*") == 0) {
-		client_auth_abort(client);
-		return;
-	}
-
-	client_auth_respond(client, str_c(client->auth_response));
-
-	memset(str_c_modifiable(client->auth_response), 0,
-	       str_len(client->auth_response));
+		return FALSE;
+	return TRUE;
 }
 
 int cmd_authenticate(struct managesieve_client *msieve_client,
diff --git a/src/managesieve-login/client-authenticate.h b/src/managesieve-login/client-authenticate.h
index e58c8fe5c092e034e0dada0d8491750c59cac26d..3deb83ba6b70796eda426a375c8fc66115da8075 100644
--- a/src/managesieve-login/client-authenticate.h
+++ b/src/managesieve-login/client-authenticate.h
@@ -12,7 +12,7 @@ void managesieve_client_auth_result(struct client *client,
 
 void managesieve_client_auth_send_challenge(struct client *client,
 					    const char *data);
-void managesieve_client_auth_parse_response(struct client *client);
+bool managesieve_client_auth_parse_response(struct client *client);
 
 int cmd_authenticate(struct managesieve_client *client,
 		     const struct managesieve_arg *args);