Remove file no longer shipped with sendmail
This commit is contained in:
parent
91e5dab34f
commit
5d72136fb8
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=20109
@ -1,305 +0,0 @@
|
||||
Message-ID: <wgKo1lW00WBw46OU8k@andrew.cmu.edu>
|
||||
Date: Sun, 1 Aug 1993 00:02:57 -0400 (EDT)
|
||||
From: John Gardiner Myers <jgm+@CMU.EDU>
|
||||
To: sendmail@cs.berkeley.edu
|
||||
Subject: contrib/rcpt-streaming
|
||||
Beak: Is
|
||||
|
||||
This patch implements "RCPT streaming" in sendmail version 8. This
|
||||
patch is not an official part of sendmail. Please report all problems
|
||||
with this patch to jgm+@cmu.edu.
|
||||
|
||||
RCPT streming avoids network round trips by sending all RCPT commands
|
||||
for a single SMTP transaction together. Sendmail then waits for all
|
||||
the replies, matching them up with the apropriate addresses.
|
||||
|
||||
Apply to the sendmail src directory (your line numbers may vary) and
|
||||
compile with -DRCPTSTREAM
|
||||
|
||||
diff -cr ./src/deliver.c /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/deliver.c
|
||||
*** ./src/deliver.c Thu Jul 22 14:28:19 1993
|
||||
--- /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/deliver.c Fri Jul 30 21:11:16 1993
|
||||
***************
|
||||
*** 1334,1339 ****
|
||||
--- 1334,1354 ----
|
||||
register int i;
|
||||
|
||||
/* send the recipient list */
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ /***********************************************************************
|
||||
+ *
|
||||
+ * RCPT streaming code by John G Myers, jgm+@cmu.edu
|
||||
+ * This is not supported by the maintainer of sendmail.
|
||||
+ * Report all bugs concerning RCPT streaming to jgm+@cmu.edu
|
||||
+ *
|
||||
+ ***********************************************************************
|
||||
+ */
|
||||
+ for (to = tochain; to != NULL; to = to->q_tchain)
|
||||
+ {
|
||||
+ smtpstreammessage("RCPT To:<%s>", m, mci,
|
||||
+ to->q_user);
|
||||
+ }
|
||||
+ #endif
|
||||
tobuf[0] = '\0';
|
||||
for (to = tochain; to != NULL; to = to->q_tchain)
|
||||
{
|
||||
diff -cr ./src/usersmtp.c /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/usersmtp.c
|
||||
*** ./src/usersmtp.c Mon Jul 19 23:50:43 1993
|
||||
--- /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/usersmtp.c Fri Jul 30 21:12:00 1993
|
||||
***************
|
||||
*** 44,49 ****
|
||||
--- 44,61 ----
|
||||
|
||||
# include <sysexits.h>
|
||||
# include <errno.h>
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ /***********************************************************************
|
||||
+ *
|
||||
+ * RCPT streaming code by John G Myers, jgm+@cmu.edu
|
||||
+ * This is not supported by the maintainer of sendmail.
|
||||
+ * Report all bugs concerning RCPT streaming to jgm+@cmu.edu
|
||||
+ *
|
||||
+ ***********************************************************************
|
||||
+ */
|
||||
+ # include <sys/types.h>
|
||||
+ # include <sys/time.h>
|
||||
+ #endif
|
||||
|
||||
# ifdef SMTP
|
||||
|
||||
***************
|
||||
*** 62,67 ****
|
||||
--- 74,87 ----
|
||||
char SmtpError[MAXLINE] = ""; /* save failure error messages */
|
||||
int SmtpPid; /* pid of mailer */
|
||||
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ char *SmtpStreamBuf; /* buffer for streaming output */
|
||||
+ int SmtpStreamBufSize = 0; /* allocated size of buffer */
|
||||
+ char *SmtpStreamStart; /* pointer to text not yet written */
|
||||
+ int SmtpStreamLen = 0; /* # chars not yet written */
|
||||
+ #endif
|
||||
+
|
||||
+
|
||||
#ifdef __STDC__
|
||||
extern smtpmessage(char *f, MAILER *m, MCI *mci, ...);
|
||||
#endif
|
||||
***************
|
||||
*** 404,410 ****
|
||||
--- 424,434 ----
|
||||
{
|
||||
register int r;
|
||||
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ sprintf(SmtpMsgBuffer, "RCPT To:<%s>", to->q_user);
|
||||
+ #else
|
||||
smtpmessage("RCPT To:<%s>", m, mci, to->q_user);
|
||||
+ #endif
|
||||
|
||||
SmtpPhase = mci->mci_phase = "client RCPT";
|
||||
setproctitle("%s %s: %s", e->e_id, CurHostName, mci->mci_phase);
|
||||
***************
|
||||
*** 667,672 ****
|
||||
--- 694,703 ----
|
||||
bool firstline = TRUE;
|
||||
char junkbuf[MAXLINE];
|
||||
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ extern char MsgBuf[]; /* err.c */
|
||||
+ #endif
|
||||
+
|
||||
if (mci->mci_out != NULL)
|
||||
(void) fflush(mci->mci_out);
|
||||
|
||||
***************
|
||||
*** 682,687 ****
|
||||
--- 713,755 ----
|
||||
register char *p;
|
||||
extern time_t curtime();
|
||||
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ if (SmtpStreamLen > 0) {
|
||||
+ int outfd;
|
||||
+
|
||||
+ outfd = fileno(mci->mci_out);
|
||||
+
|
||||
+ nonblock(outfd, TRUE);
|
||||
+ r = write(outfd, SmtpStreamStart, SmtpStreamLen);
|
||||
+ nonblock(outfd, FALSE);
|
||||
+ if (r == -1 && errno != EAGAIN
|
||||
+ #ifdef EWOULDBLOCK
|
||||
+ && errno != EWOULDBLOCK
|
||||
+ #endif
|
||||
+ ) {
|
||||
+
|
||||
+ mci->mci_errno = errno;
|
||||
+ message("451 streamreply: write error to %s",
|
||||
+ mci->mci_host);
|
||||
+
|
||||
+ /* if debugging, pause so we can see state */
|
||||
+ if (tTd(18, 100))
|
||||
+ pause();
|
||||
+ # ifdef LOG
|
||||
+ if (LogLevel > 0)
|
||||
+ syslog(LOG_INFO, "%s", &MsgBuf[4]);
|
||||
+ # endif /* LOG */
|
||||
+ /* stop trying to write output */
|
||||
+ SmtpStreamLen = 0;
|
||||
+ continue;
|
||||
+ }
|
||||
+ if (r > 0) {
|
||||
+ SmtpStreamStart += r;
|
||||
+ SmtpStreamLen -= r;
|
||||
+ }
|
||||
+ }
|
||||
+ #endif /* RCPTSTREAM */
|
||||
+
|
||||
/* actually do the read */
|
||||
if (e->e_xfp != NULL)
|
||||
(void) fflush(e->e_xfp); /* for debugging */
|
||||
***************
|
||||
*** 792,797 ****
|
||||
--- 860,937 ----
|
||||
|
||||
return (r);
|
||||
}
|
||||
+
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ /*
|
||||
+ ** SMTPSTREAMMESSAGE -- buffer message to be streamed to server
|
||||
+ **
|
||||
+ ** Parameters:
|
||||
+ ** f -- format
|
||||
+ ** m -- the mailer to control formatting.
|
||||
+ ** a, b, c -- parameters
|
||||
+ **
|
||||
+ ** Returns:
|
||||
+ ** none.
|
||||
+ **
|
||||
+ ** Side Effects:
|
||||
+ ** stores message in SmtpStreamBuf
|
||||
+ */
|
||||
+
|
||||
+ /*VARARGS1*/
|
||||
+ #ifdef __STDC__
|
||||
+ smtpstreammessage(char *f, MAILER *m, MCI *mci, ...)
|
||||
+ #else
|
||||
+ smtpstreammessage(f, m, mci, va_alist)
|
||||
+ char *f;
|
||||
+ MAILER *m;
|
||||
+ MCI *mci;
|
||||
+ va_dcl
|
||||
+ #endif
|
||||
+ {
|
||||
+ VA_LOCAL_DECL
|
||||
+ int len;
|
||||
+
|
||||
+ VA_START(mci);
|
||||
+ (void) vsprintf(SmtpMsgBuffer, f, ap);
|
||||
+ VA_END;
|
||||
+
|
||||
+ if (tTd(18, 1) || Verbose)
|
||||
+ nmessage(">>> %s", SmtpMsgBuffer);
|
||||
+ if (TrafficLogFile != NULL)
|
||||
+ fprintf(TrafficLogFile, "%05d >>> %s\n", getpid(), SmtpMsgBuffer);
|
||||
+
|
||||
+ if (mci->mci_out == NULL) {
|
||||
+ if (tTd(18, 1)) printf("smtpstreammessage: NULL mci_out\n");
|
||||
+ return;
|
||||
+ }
|
||||
+
|
||||
+ strcat(SmtpMsgBuffer, m == NULL ? "\r\n" : m->m_eol);
|
||||
+ len = strlen(SmtpMsgBuffer);
|
||||
+
|
||||
+ if (SmtpStreamLen == 0) {
|
||||
+ if (SmtpStreamBufSize == 0) {
|
||||
+ SmtpStreamBufSize = MAXLINE;
|
||||
+ SmtpStreamBuf = xalloc(SmtpStreamBufSize);
|
||||
+ }
|
||||
+ SmtpStreamStart = SmtpStreamBuf;
|
||||
+ }
|
||||
+
|
||||
+ if (SmtpStreamBufSize - SmtpStreamLen < len + 1) {
|
||||
+ int start = SmtpStreamStart - SmtpStreamBuf;
|
||||
+ SmtpStreamBufSize += MAXLINE;
|
||||
+ SmtpStreamBuf = realloc(SmtpStreamBuf, SmtpStreamBufSize);
|
||||
+ if (!SmtpStreamBuf) {
|
||||
+ syserr("Out of memory!!");
|
||||
+ abort();
|
||||
+ /* exit(EX_UNAVAILABLE); */
|
||||
+ }
|
||||
+ SmtpStreamStart = SmtpStreamBuf + start;
|
||||
+ }
|
||||
+
|
||||
+ strcpy(SmtpStreamBuf + SmtpStreamLen, SmtpMsgBuffer);
|
||||
+ SmtpStreamLen += len;
|
||||
+ }
|
||||
+ #endif /* RCPTSTREAM */
|
||||
/*
|
||||
** SMTPMESSAGE -- send message to server
|
||||
**
|
||||
Only in /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src: usersmtp.c~
|
||||
diff -cr ./src/util.c /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/util.c
|
||||
*** ./src/util.c Mon Jul 19 23:50:45 1993
|
||||
--- /afs/andrew.cmu.edu/system/src/local/../host/oldsmail/016/src/util.c Mon Jul 26 17:17:10 1993
|
||||
***************
|
||||
*** 1034,1039 ****
|
||||
--- 1034,1091 ----
|
||||
return (FALSE);
|
||||
return (TRUE);
|
||||
}
|
||||
+
|
||||
+ #ifdef RCPTSTREAM
|
||||
+ /***********************************************************************
|
||||
+ *
|
||||
+ * RCPT streaming code by John G Myers, jgm+@cmu.edu
|
||||
+ * This is not supported by the maintainer of sendmail.
|
||||
+ * Report all bugs concerning RCPT streaming to jgm+@cmu.edu
|
||||
+ *
|
||||
+ ***********************************************************************
|
||||
+ */
|
||||
+
|
||||
+ #include <fcntl.h>
|
||||
+
|
||||
+ /*
|
||||
+ ** NONBLOCK -- set or clear non-blocking mode on file descriptor
|
||||
+ **
|
||||
+ ** Parameters:
|
||||
+ ** fd -- the file descriptor
|
||||
+ ** mode -- TRUE to set non-blocking mode
|
||||
+ ** FALSE to clear non-blocking mode
|
||||
+ **
|
||||
+ ** Returns:
|
||||
+ ** none
|
||||
+ **
|
||||
+ ** Side Effects:
|
||||
+ ** modifies nonblocking status of fd
|
||||
+ */
|
||||
+
|
||||
+ nonblock(fd, mode)
|
||||
+ int fd;
|
||||
+ bool mode;
|
||||
+ {
|
||||
+ int flags;
|
||||
+
|
||||
+ flags = fcntl(fd, F_GETFL, 0);
|
||||
+ if (mode) {
|
||||
+ #ifdef FNONBIO
|
||||
+ flags |= FNONBIO;
|
||||
+ #else
|
||||
+ flags |= O_NDELAY;
|
||||
+ #endif
|
||||
+ }
|
||||
+ else {
|
||||
+ #ifdef FNONBIO
|
||||
+ flags &= ~FNONBIO;
|
||||
+ #else
|
||||
+ flags &= ~O_NDELAY;
|
||||
+ #endif
|
||||
+ }
|
||||
+ fcntl(fd, F_SETFL, flags);
|
||||
+ }
|
||||
+ #endif
|
||||
/*
|
||||
** STRCONTAINEDIN -- tell if one string is contained in another
|
||||
**
|
Loading…
Reference in New Issue
Block a user