- else if(rc==SASL_NOMECH)
- {
- /* this is a temporary failure, because the mechanism is not
- * available for this user. If it wasn't available at all, we
- * shouldn't have got here in the first place...
- */
- HDEBUG(D_auth)
- debug_printf("Cyrus SASL temporary failure %d (%s)\n", rc, sasl_errstring(rc, NULL, NULL));
- auth_defer_msg =
- string_sprintf("Cyrus SASL: mechanism %s not available", ob->server_mech);
- sasl_dispose(&conn);
- sasl_done();
- return DEFER;
- }
- else if(!(rc==SASL_OK || rc==SASL_CONTINUE))
- {
- /* Anything else is a temporary failure, and we'll let SASL print out
- * the error string for us
- */
- HDEBUG(D_auth)
- debug_printf("Cyrus SASL temporary failure %d (%s)\n", rc, sasl_errstring(rc, NULL, NULL));
- auth_defer_msg =
- string_sprintf("Cyrus SASL: %s", sasl_errstring(rc, NULL, NULL));
- sasl_dispose(&conn);
- sasl_done();
- return DEFER;
- }
- else if(rc==SASL_OK)