diff options
author | Pav Lucistnik <pav@FreeBSD.org> | 2005-07-18 16:04:16 +0000 |
---|---|---|
committer | Pav Lucistnik <pav@FreeBSD.org> | 2005-07-18 16:04:16 +0000 |
commit | 05065d99c78a53f6ab97086574a01d75be79decc (patch) | |
tree | 2f9f09b2b30cc41ccd58808030a38660205a46fb /mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c | |
parent | 679f73e91c22fe170f78e55bd8ed2adf7a40849c (diff) | |
download | ports-05065d99c78a53f6ab97086574a01d75be79decc.tar.gz ports-05065d99c78a53f6ab97086574a01d75be79decc.zip |
Notes
Diffstat (limited to 'mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c')
-rw-r--r-- | mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c | 66 |
1 files changed, 66 insertions, 0 deletions
diff --git a/mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c b/mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c new file mode 100644 index 000000000000..8e355487776c --- /dev/null +++ b/mail/dbmail-devel/files/patch-2.0.4_bug145_lmtp.c @@ -0,0 +1,66 @@ +Index: lmtp.c +=================================================================== +--- lmtp.c (revision 1559) ++++ lmtp.c (revision 1700) +@@ -77,8 +77,9 @@ + * - -1 on error + * - 1 on success + */ +-static int read_whole_message_network(FILE *instream, char **whole_message, +- u64_t *whole_message_size); ++static int read_whole_message_network(FILE *instream, ++ char **whole_message, u64_t *whole_message_size, ++ const char *prepend_format, ...) PRINTF_ARGS(4, 5); + + /** + * \function lmtp_error +@@ -624,7 +625,9 @@ + if (read_whole_message_network( + (FILE *) instream, + &whole_message, +- &whole_message_size) < 0) { ++ &whole_message_size, ++ "Return-Path: %s\r\n", ++ (char *)(list_getstart(&from)->data)) < 0) { + trace(TRACE_ERROR, + "%s,%s: read_whole_message_network() failed", + __FILE__, __func__); +@@ -755,8 +758,9 @@ + return 1; + } + +-int read_whole_message_network(FILE *instream, char **whole_message, +- u64_t *whole_message_size) ++int read_whole_message_network(FILE *instream, ++ char **whole_message, u64_t *whole_message_size, ++ const char *prepend_format, ...) + { + char *tmpmessage = NULL; + char tmpline[MESSAGE_MAX_LINE_SIZE + 1]; +@@ -765,9 +769,17 @@ + size_t total_size = 0; + size_t current_pos = 0; + int error = 0; ++ va_list argp; + + memset(tmpline, '\0', MESSAGE_MAX_LINE_SIZE + 1); +- while (fgets(tmpline, MESSAGE_MAX_LINE_SIZE, instream) != NULL) { ++ ++ /* This adds the Return-Path header and any other ++ * important headers we might need; see RFC 2076. */ ++ va_start(argp, prepend_format); ++ line_size = vsnprintf(tmpline, MESSAGE_MAX_LINE_SIZE, prepend_format, argp); ++ va_end(argp); ++ ++ do { + line_size = strlen(tmpline); + + /* It sometimes happens that we read a line of size 0, +@@ -798,6 +810,7 @@ + + memset(tmpline, '\0', MESSAGE_MAX_LINE_SIZE + 1); + } ++ while (fgets(tmpline, MESSAGE_MAX_LINE_SIZE, instream) != NULL); + + if (ferror(instream)) { + trace(TRACE_ERROR, "%s,%s: error reading instream", |