X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=mts%2Fsmtp%2Fsmtp.c;h=35eefb4887bbe4f3d698875b5ea545b73c55801f;hb=4f653e8f897068fc803607a5975fa18ab1519bcf;hp=850693dd8e32c8edcc3938783f3791bfdfb28b98;hpb=d4178eb3eebbf5c51c51cc713df58a2bdaa6bede;p=mmh diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c index 850693d..35eefb4 100644 --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -105,6 +105,8 @@ static sasl_callback_t callbacks[] = { #define SM_SASL_N_CB_USER 0 { SASL_CB_PASS, sm_get_pass, NULL }, #define SM_SASL_N_CB_PASS 1 + { SASL_CB_AUTHNAME, sm_get_user, NULL }, +#define SM_SASL_N_CB_AUTHNAME 2 { SASL_CB_LIST_END, NULL, NULL }, }; #endif /* CYRUS_SASL */ @@ -1084,6 +1086,7 @@ sm_auth_sasl(char *user, char *mechlist, char *host) user = getusername(); callbacks[SM_SASL_N_CB_USER].context = user; + callbacks[SM_SASL_N_CB_AUTHNAME].context = user; /* * This is a _bit_ of a hack ... but if the hostname wasn't supplied @@ -1293,7 +1296,7 @@ sm_get_user(void *context, int id, const char **result, unsigned *len) { char *user = (char *) context; - if (! result || id != SASL_CB_USER) + if (! result || ((id != SASL_CB_USER) && (id != SASL_CB_AUTHNAME))) return SASL_BADPARAM; *result = user;