Cleanup: adjust the VSTREAM buffer strategy when reusing
an SMTP connection with a large TCP MSS value. File:
- smtp/smtp_proto.c.
+ smtp/smtp_reuse.c.
+
+20081204
+
+ Cleanup: state the SMTP client PIPELINING implementation's
+ dependency on monotonic VSTREAM buffer size behavior, and
+ add some checks for boundary cases with VSTREAM buffer size
+ change requests. Files: util/vstream.c, smtp/smtp_proto.c.
+
+20081205
+
+ Fix 20081202 flush code. Victor Duchovni. File: smtpd/smtpd.c.
+
+ Safety: add another check to "postfix check", in this case
+ for group or other writable queue_directory. File:
+ conf/postfix-script.
$WARN not owned by root: $dir)
done
+ # Some people break Postfix's security model.
+ ls -lLd $queue_directory | egrep '^.....(w|...w)' >/dev/null && \
+ $WARN group or other writable: $queue_directory
+
find $daemon_directory/* $config_directory/* ! -user root \
-exec $WARN not owned by root: {} \;
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20081203"
+#define MAIL_RELEASE_DATE "20081205"
#define MAIL_VERSION_NUMBER "2.6"
#ifdef SNAPSHOT
*
* XXX No need to do this before and after STARTTLS, but it's not a big deal
* if we do.
+ *
+ * XXX This critically depends on VSTREAM buffers to never be smaller than
+ * VSTREAM_BUFSIZE.
*/
if (session->features & SMTP_FEATURE_PIPELINING) {
optlen = sizeof(sndbufsize);
static int quit_cmd(SMTPD_STATE *state, int unused_argc, SMTPD_TOKEN *unused_argv)
{
+ int out_pending = vstream_bufstat(state->client, VSTREAM_BST_OUT_PEND);
/*
* Don't bother checking the syntax.
* XXX When this was added in Postfix 2.1 we used vstream_fflush(). As of
* Postfix 2.3 we use smtp_flush() for better error reporting.
*/
- if (vstream_bufstat(state->client, VSTREAM_BST_OUT_PEND) > 0)
+ if (out_pending > 0)
smtp_flush(state->client);
return (0);
}
if (req_bufsize < 0)
msg_panic("VSTREAM_CTL_BUFSIZE with negative size: %ld",
(long) req_bufsize);
- if (req_bufsize > stream->req_bufsize)
+ if (stream->req_bufsize == 0)
+ stream->req_bufsize = VSTREAM_BUFSIZE; /* 2.4 binary compat. */
+ if (stream != VSTREAM_ERR
+ && req_bufsize > stream->req_bufsize)
stream->req_bufsize = req_bufsize;
break;
default: