2
0
mirror of https://github.com/vdukhovni/postfix synced 2025-08-30 21:55:20 +00:00

postfix-2.3.16

This commit is contained in:
Wietse Venema
2009-01-03 00:00:00 -05:00
committed by Viktor Dukhovni
parent f9a223616e
commit d44913aaab
8 changed files with 135 additions and 32 deletions

View File

@@ -13173,3 +13173,15 @@ Apologies for any names omitted.
legitimate configurations that deliver mail to a symbolic
link in a directory with less restrictive permissions.
20080908
Bugfix: the cleanup server did not update the recipient
count after Milter application access. Backported from
Postfix 2.4 update 20070215. Files: cleanup_api.c,
cleanup_extracted.c, cleanup_final.c.
20081203
Cleanup: adjust the VSTREAM buffer strategy when reusing
an SMTP connection with a large TCP MSS value. File:
smtp/smtp_reuse.c.

View File

@@ -3,12 +3,12 @@ SRCS = cleanup.c cleanup_out.c cleanup_envelope.c cleanup_message.c \
cleanup_extracted.c cleanup_state.c cleanup_rewrite.c \
cleanup_map11.c cleanup_map1n.c cleanup_masquerade.c \
cleanup_out_recipient.c cleanup_init.c cleanup_api.c \
cleanup_addr.c cleanup_bounce.c cleanup_milter.c
cleanup_addr.c cleanup_bounce.c cleanup_milter.c cleanup_final.c
OBJS = cleanup.o cleanup_out.o cleanup_envelope.o cleanup_message.o \
cleanup_extracted.o cleanup_state.o cleanup_rewrite.o \
cleanup_map11.o cleanup_map1n.o cleanup_masquerade.o \
cleanup_out_recipient.o cleanup_init.o cleanup_api.o \
cleanup_addr.o cleanup_bounce.o cleanup_milter.o
cleanup_addr.o cleanup_bounce.o cleanup_milter.o cleanup_final.o
HDRS =
TESTSRC =
DEFS = -I. -I$(INC_DIR) -D$(SYSTYPE)
@@ -321,6 +321,32 @@ cleanup_extracted.o: ../../include/vstream.h
cleanup_extracted.o: ../../include/vstring.h
cleanup_extracted.o: cleanup.h
cleanup_extracted.o: cleanup_extracted.c
cleanup_final.o: ../../include/argv.h
cleanup_final.o: ../../include/been_here.h
cleanup_final.o: ../../include/cleanup_user.h
cleanup_final.o: ../../include/dict.h
cleanup_final.o: ../../include/header_opts.h
cleanup_final.o: ../../include/htable.h
cleanup_final.o: ../../include/mail_conf.h
cleanup_final.o: ../../include/mail_stream.h
cleanup_final.o: ../../include/maps.h
cleanup_final.o: ../../include/match_list.h
cleanup_final.o: ../../include/match_ops.h
cleanup_final.o: ../../include/milter.h
cleanup_final.o: ../../include/mime_state.h
cleanup_final.o: ../../include/msg.h
cleanup_final.o: ../../include/mymalloc.h
cleanup_final.o: ../../include/nvtable.h
cleanup_final.o: ../../include/rec_type.h
cleanup_final.o: ../../include/resolve_clnt.h
cleanup_final.o: ../../include/string_list.h
cleanup_final.o: ../../include/sys_defs.h
cleanup_final.o: ../../include/tok822.h
cleanup_final.o: ../../include/vbuf.h
cleanup_final.o: ../../include/vstream.h
cleanup_final.o: ../../include/vstring.h
cleanup_final.o: cleanup.h
cleanup_final.o: cleanup_final.c
cleanup_init.o: ../../include/argv.h
cleanup_init.o: ../../include/been_here.h
cleanup_init.o: ../../include/dict.h

View File

@@ -219,6 +219,11 @@ extern void cleanup_message(CLEANUP_STATE *, int, const char *, ssize_t);
*/
extern void cleanup_extracted(CLEANUP_STATE *, int, const char *, ssize_t);
/*
* cleanup_final.c
*/
extern void cleanup_final(CLEANUP_STATE *);
/*
* cleanup_rewrite.c
*/

View File

@@ -234,6 +234,13 @@ int cleanup_flush(CLEANUP_STATE *state)
}
}
/*
* Update the preliminary message size and count fields with the actual
* values.
*/
if (CLEANUP_OUT_OK(state))
cleanup_final(state);
/*
* If there was an error that requires us to generate a bounce message
* (mail submitted with the Postfix sendmail command, mail forwarded by

View File

@@ -300,32 +300,4 @@ void cleanup_extracted_finish(CLEANUP_STATE *state)
* Terminate the extracted segment.
*/
cleanup_out_string(state, REC_TYPE_END, "");
/*
* vstream_fseek() would flush the buffer anyway, but the code just reads
* better if we flush first, because it makes seek error handling more
* straightforward.
*/
if (vstream_fflush(state->dst)) {
if (errno == EFBIG) {
msg_warn("%s: queue file size limit exceeded", state->queue_id);
state->errs |= CLEANUP_STAT_SIZE;
} else {
msg_warn("%s: write queue file: %m", state->queue_id);
state->errs |= CLEANUP_STAT_WRITE;
}
return;
}
/*
* Update the preliminary message size and count fields with the actual
* values.
*/
if (vstream_fseek(state->dst, 0L, SEEK_SET) < 0)
msg_fatal("%s: vstream_fseek %s: %m", myname, cleanup_path);
cleanup_out_format(state, REC_TYPE_SIZE, REC_TYPE_SIZE_FORMAT,
(REC_TYPE_SIZE_CAST1) (state->xtra_offset - state->data_offset),
(REC_TYPE_SIZE_CAST2) state->data_offset,
(REC_TYPE_SIZE_CAST3) state->rcpt_count,
(REC_TYPE_SIZE_CAST4) state->qmgr_opts);
}

View File

@@ -0,0 +1,76 @@
/*++
/* NAME
/* cleanup_final 3
/* SUMMARY
/* finalize queue file
/* SYNOPSIS
/* #include "cleanup.h"
/*
/* void cleanup_final(state)
/* CLEANUP_STATE *state;
/* DESCRIPTION
/* cleanup_final() performs final queue file content (not
/* attribute) updates so that the file is ready to be closed.
/* LICENSE
/* .ad
/* .fi
/* The Secure Mailer license must be distributed with this software.
/* AUTHOR(S)
/* Wietse Venema
/* IBM T.J. Watson Research
/* P.O. Box 704
/* Yorktown Heights, NY 10598, USA
/*--*/
/* System library. */
#include <sys_defs.h>
#include <errno.h>
/* Utility library. */
#include <msg.h>
/* Global library. */
#include <cleanup_user.h>
#include <rec_type.h>
/* Application-specific. */
#include "cleanup.h"
/* cleanup_final - final queue file content updates */
void cleanup_final(CLEANUP_STATE *state)
{
const char *myname = "cleanup_final";
/*
* vstream_fseek() would flush the buffer anyway, but the code just reads
* better if we flush first, because it makes seek error handling more
* straightforward.
*/
if (vstream_fflush(state->dst)) {
if (errno == EFBIG) {
msg_warn("%s: queue file size limit exceeded", state->queue_id);
state->errs |= CLEANUP_STAT_SIZE;
} else {
msg_warn("%s: write queue file: %m", state->queue_id);
state->errs |= CLEANUP_STAT_WRITE;
}
return;
}
/*
* Update the preliminary message size and count fields with the actual
* values.
*/
if (vstream_fseek(state->dst, 0L, SEEK_SET) < 0)
msg_fatal("%s: vstream_fseek %s: %m", myname, cleanup_path);
cleanup_out_format(state, REC_TYPE_SIZE, REC_TYPE_SIZE_FORMAT,
(REC_TYPE_SIZE_CAST1) (state->xtra_offset - state->data_offset),
(REC_TYPE_SIZE_CAST2) state->data_offset,
(REC_TYPE_SIZE_CAST3) state->rcpt_count,
(REC_TYPE_SIZE_CAST4) state->qmgr_opts);
}

View File

@@ -20,8 +20,8 @@
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
#define MAIL_RELEASE_DATE "20080814"
#define MAIL_VERSION_NUMBER "2.3.15"
#define MAIL_RELEASE_DATE "20090103"
#define MAIL_VERSION_NUMBER "2.3.16"
#ifdef SNAPSHOT
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE

View File

@@ -213,6 +213,11 @@ static SMTP_SESSION *smtp_reuse_common(SMTP_STATE *state, int fd,
return (state->session = 0);
}
/*
* Avoid poor performance when TCP MSS > VSTREAM_BUFSIZE.
*/
vstream_tweak_sock(session->stream);
/*
* Update the list of used cached addresses.
*/