i_assert(!client->destroyed ||
sasl_reply == SASL_SERVER_REPLY_AUTH_ABORTED ||
- sasl_reply == SASL_SERVER_REPLY_MASTER_ABORTED ||
sasl_reply == SASL_SERVER_REPLY_MASTER_FAILED);
switch (sasl_reply) {
client_auth_failed(client);
break;
case SASL_SERVER_REPLY_MASTER_FAILED:
- if (data == NULL)
- client_destroy_internal_failure(client);
- else {
- client_send_line(client,
- CLIENT_CMD_REPLY_AUTH_FAIL_TEMP, data);
+ if (data != NULL) {
/* authentication itself succeeded, we just hit some
internal failure. */
- client_destroy_success(client, data);
+ client_send_line(client,
+ CLIENT_CMD_REPLY_AUTH_FAIL_TEMP, data);
}
- break;
- case SASL_SERVER_REPLY_MASTER_ABORTED:
- /* mail process already sent the error message to client */
- client_destroy_success(client, data);
+
+ if (data == NULL)
+ client_destroy_internal_failure(client);
+ else
+ client_destroy_success(client, data);
break;
case SASL_SERVER_REPLY_CONTINUE:
client->v.auth_send_challenge(client, data);
sasl_reply = SASL_SERVER_REPLY_SUCCESS;
break;
case MASTER_AUTH_STATUS_INTERNAL_ERROR:
- sasl_reply = SASL_SERVER_REPLY_MASTER_ABORTED;
+ sasl_reply = SASL_SERVER_REPLY_MASTER_FAILED;
break;
}
client->mail_pid = reply->mail_pid;
SASL_SERVER_REPLY_AUTH_FAILED,
SASL_SERVER_REPLY_AUTH_ABORTED,
SASL_SERVER_REPLY_MASTER_FAILED,
- SASL_SERVER_REPLY_MASTER_ABORTED,
SASL_SERVER_REPLY_CONTINUE
};