X-Git-Url: https://diplodocus.org/git/nmh/blobdiff_plain/0483d6ce12d75f267a9e8b6cd16280ef1f4f2e2a..c576ad2674c37a1c63f004c71049998f38854c64:/mts/smtp/smtp.c diff --git a/mts/smtp/smtp.c b/mts/smtp/smtp.c index 7808e1a7..f9500bc6 100644 --- a/mts/smtp/smtp.c +++ b/mts/smtp/smtp.c @@ -13,6 +13,7 @@ #include #include +#include "sbr/base64.h" /* * This module implements an interface to SendMail very similar @@ -37,7 +38,7 @@ static int sm_addrs = 0; static int sm_child = NOTOK; static int sm_debug = 0; -static int sm_nl = TRUE; +static bool sm_nl = true; static int sm_verbose = 0; static netsec_context *nsc = NULL; @@ -59,12 +60,12 @@ static int sendmail_init (char *, int, int, int, int, const char *, const char *); static int rclient (char *, char *, char **); -static int sm_ierror (const char *fmt, ...); +static int sm_ierror (const char *fmt, ...) CHECK_PRINTF(1, 2); static int sm_nerror (char *); -static int smtalk (int time, char *fmt, ...); +static int smtalk (int time, char *fmt, ...) CHECK_PRINTF(2, 3); static int sm_wstream (char *, int); static int smhear (void); -static char *EHLOset (char *); +static char *EHLOset (char *) PURE; static int sm_sasl_callback(enum sasl_message_type, unsigned const char *, unsigned int, unsigned char **, unsigned int *, char **); @@ -91,7 +92,7 @@ smtp_init (char *client, char *server, char *port, int watch, int verbose, char *errstr, *chosen_server; if (watch) - verbose = TRUE; + verbose = true; sm_verbose = verbose; sm_debug = debug; @@ -262,7 +263,7 @@ sendmail_init (char *client, int watch, int verbose, int debug, int sasl, char *vec[15], *errstr; if (watch) - verbose = TRUE; + verbose = true; sm_verbose = verbose; sm_debug = debug; @@ -306,9 +307,7 @@ sendmail_init (char *client, int watch, int verbose, int debug, int sasl, return sm_ierror ("no pipes"); } - for (i = 0; (sm_child = fork ()) == NOTOK && i < 5; i++) - sleep (5); - + sm_child = fork(); switch (sm_child) { case NOTOK: close (pdo[0]); @@ -348,7 +347,7 @@ sendmail_init (char *client, int watch, int verbose, int debug, int sasl, close (pdi[1]); close (pdo[0]); - netsec_set_fd(nsc, pdi[i], pdo[1]); + netsec_set_fd(nsc, pdi[0], pdo[1]); netsec_set_timeout(nsc, SM_OPEN); result = smhear (); switch (result) { @@ -508,7 +507,7 @@ sm_waend (void) { switch (smtalk (SM_DATA, "DATA")) { case 354: - sm_nl = TRUE; + sm_nl = true; return RP_OK; case 451: @@ -534,14 +533,14 @@ sm_wtxt (char *buffer, int len) result = sm_wstream (buffer, len); - return (result == NOTOK ? RP_BHST : RP_OK); + return result == NOTOK ? RP_BHST : RP_OK; } int sm_wtend (void) { - if (sm_wstream ((char *) NULL, 0) == NOTOK) + if (sm_wstream(NULL, 0) == NOTOK) return RP_BHST; switch (smtalk (SM_DOT + 3 * sm_addrs, ".")) { @@ -633,7 +632,7 @@ sm_end (int type) status = OK; } - return (status ? RP_BHST : RP_OK); + return status ? RP_BHST : RP_OK; } @@ -719,7 +718,7 @@ sm_wstream (char *buffer, int len) for (bp = buffer; bp && len > 0; bp++, len--) { switch (*bp) { case '\n': - sm_nl = TRUE; + sm_nl = true; if (netsec_write(nsc, "\r", 1, &errstr) != OK) { sm_nerror(errstr); return NOTOK; @@ -735,7 +734,7 @@ sm_wstream (char *buffer, int len) /* FALLTHRU */ default: - sm_nl = FALSE; + sm_nl = false; } if (netsec_write(nsc, bp, 1, &errstr) != OK) { sm_nerror(errstr); @@ -752,7 +751,8 @@ sm_wstream (char *buffer, int len) static int smhear (void) { - int i, code, cont, more; + int i, code; + bool cont, more; size_t buflen, rc; unsigned char *bp; char *rp; @@ -784,7 +784,7 @@ again: ; rp = sm_reply.text; rc = sizeof(sm_reply.text) - 1; - for (more = FALSE; (buffer = netsec_readline(nsc, &buflen, + for (more = false; (buffer = netsec_readline(nsc, &buflen, &errstr)) != NULL ; ) { if (doingEHLO @@ -810,13 +810,13 @@ again: ; for (; buflen > 0 && (!isascii (*bp) || !isdigit (*bp)); bp++, buflen--) continue; - cont = FALSE; + cont = false; code = atoi ((char *) bp); bp += 3, buflen -= 3; for (; buflen > 0 && isspace (*bp); bp++, buflen--) continue; if (buflen > 0 && *bp == '-') { - cont = TRUE; + cont = true; bp++, buflen--; for (; buflen > 0 && isspace (*bp); bp++, buflen--) continue; @@ -825,7 +825,7 @@ again: ; if (more) { if (code != sm_reply.code || cont) continue; - more = FALSE; + more = false; } else { sm_reply.code = code; more = cont;