Fixed a problem in the sasl state machine
At least Wildfire does not send an extra challange but directly sends a success.
From what I could see in RFC 3920 this is perfectly legal but the state machine
in LmSASL assumed there would be an extra step.
--- a/loudmouth/lm-sasl.c Sat Feb 24 01:47:22 2007 +0100
+++ b/loudmouth/lm-sasl.c Sat Feb 24 02:22:55 2007 +0100
@@ -534,7 +534,8 @@
}
break;
case AUTH_TYPE_DIGEST:
- if (sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE) {
+ if (sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_AUTH_RESPONSE &&
+ sasl->state != SASL_AUTH_STATE_DIGEST_MD5_SENT_FINAL_RESPONSE) {
g_debug ("%s: server sent success before finishing auth", G_STRFUNC);
if (sasl->handler) {
sasl->handler (sasl, sasl->connection, FALSE, "server error");