X-Git-Url: http://git.marmaro.de/?a=blobdiff_plain;f=mts%2Fsmtp%2Fsmtp.c;h=9527a5e1e8cfb1d0b082a22cc5426adf2ee5fbb7;hb=962408f5411cf543878b1e2de097f6376b459de4;hp=5760356e3c9b2ff37b87e794e8544371a4bba751;hpb=557d33aeabe46e9a0411959703f721c5b9ce2ae9;p=mmh diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c index 5760356..9527a5e 100644 --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -18,8 +18,8 @@ #endif #ifdef CYRUS_SASL -#include -#include +#include +#include #include #include #include @@ -60,14 +60,14 @@ /* * these codes must all be different! */ -#define SM_OPEN 90 /* Changed from 30 in case of nameserver flakiness */ +#define SM_OPEN 300 /* Changed to 5 minutes to comply with a SHOULD in RFC 1123 */ #define SM_HELO 20 #define SM_RSET 15 -#define SM_MAIL 40 -#define SM_RCPT 120 -#define SM_DATA 20 -#define SM_TEXT 150 -#define SM_DOT 180 +#define SM_MAIL 301 /* changed to 5 minutes and a second (for uniqueness), see above */ +#define SM_RCPT 302 /* see above */ +#define SM_DATA 120 /* see above */ +#define SM_TEXT 180 /* see above */ +#define SM_DOT 600 /* see above */ #define SM_QUIT 30 #define SM_CLOS 10 #define SM_AUTH 45 @@ -502,15 +502,6 @@ rclient (char *server, char *protocol, char *service) return NOTOK; } -#ifdef CYRUS_SASL -#include -#include -#include -#include -#include -#include -#endif /* CYRUS_SASL */ - int sm_winit (int mode, char *from) { @@ -968,7 +959,7 @@ bad_data: free (cp); { -#ifdef HAVE_ST_BLKSIZE +#ifdef HAVE_STRUCT_STAT_ST_BLKSIZE struct stat st; if (fstat (fileno (sm_wfp), &st) == NOTOK || (cc = st.st_blksize) < BUFSIZ) @@ -1255,7 +1246,7 @@ sm_auth_sasl(char *user, char *mechlist, char *host) result = sasl_decode64(sm_reply.text, sm_reply.length, outbuf, sizeof(outbuf), &outlen); - if (result != SASL_OK) { + if (result != SASL_OK && result != SASL_CONTINUE) { smtalk(SM_AUTH, "*"); sm_ierror("SASL base64 decode failed: %s", sasl_errstring(result, NULL, NULL)); @@ -1579,7 +1570,8 @@ static int smhear (void) { int i, code, cont, bc, rc, more; - char *bp, *rp; + unsigned char *bp; + char *rp; char **ehlo, buffer[BUFSIZ]; if (doingEHLO) {