projects
/
mmh
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Backport fix from trunk for SASL bug.
[mmh]
/
mts
/
smtp
/
smtp.c
diff --git
a/mts/smtp/smtp.c
b/mts/smtp/smtp.c
index
5760356
..
9527a5e
100644
(file)
--- a/
mts/smtp/smtp.c
+++ b/
mts/smtp/smtp.c
@@
-18,8
+18,8
@@
#endif
#ifdef CYRUS_SASL
#endif
#ifdef CYRUS_SASL
-#include <sasl.h>
-#include <saslutil.h>
+#include <sasl/sasl.h>
+#include <sasl/saslutil.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <sys/socket.h>
#include <netinet/in.h>
#include <arpa/inet.h>
@@
-60,14
+60,14
@@
/*
* these codes must all be different!
*/
/*
* 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_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
#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;
}
return NOTOK;
}
-#ifdef CYRUS_SASL
-#include <sasl.h>
-#include <sys/socket.h>
-#include <netinet/in.h>
-#include <arpa/inet.h>
-#include <netdb.h>
-#include <errno.h>
-#endif /* CYRUS_SASL */
-
int
sm_winit (int mode, char *from)
{
int
sm_winit (int mode, char *from)
{
@@
-968,7
+959,7
@@
bad_data:
free (cp);
{
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)
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);
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));
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;
smhear (void)
{
int i, code, cont, bc, rc, more;
- char *bp, *rp;
+ unsigned char *bp;
+ char *rp;
char **ehlo, buffer[BUFSIZ];
if (doingEHLO) {
char **ehlo, buffer[BUFSIZ];
if (doingEHLO) {