mirror of
https://github.com/vdukhovni/postfix
synced 2025-08-30 13:48:06 +00:00
postfix-2.9.15
This commit is contained in:
parent
0c804d19d5
commit
f55d429ab2
@ -17968,3 +17968,27 @@ Apologies for any names omitted.
|
||||
SSLv2 or SSLv3. See the RELEASE_NOTES file for how to get
|
||||
the old settings back. Files: global/mail_params.h,
|
||||
proto/postconf.proto, and files derived from those.
|
||||
|
||||
20150924
|
||||
|
||||
Bugfix (introduced: 20090216-24): incorrect postmulti error
|
||||
message. Reported by Patrik Koetter. Fix by Viktor Dukhovni.
|
||||
File: postmulti/postmulti.c.
|
||||
|
||||
Workaround: don't create a new instance when the template
|
||||
main.cf and master.cf files are missing, as happens on
|
||||
Debian-like systems. Viktor Dukhovni. File: conf/postmulti-script.
|
||||
|
||||
20150925
|
||||
|
||||
Bugfix (introduced: 19970309, fixed 20150421 in development
|
||||
release): reset errno before calling readdir(), in order
|
||||
to distinguish between an end-of-directory and an error
|
||||
condition. File: scandir.c.
|
||||
|
||||
20150930
|
||||
|
||||
Bugfix (introduced: 20040124): Milter client panic while
|
||||
adding a header, because the PREPEND action used the same
|
||||
output function for header_checks and body_checks. Viktor
|
||||
Dukhovni and Wietse. File: cleanup/cleanup_message.c.
|
||||
|
@ -127,6 +127,11 @@ create|import)
|
||||
fatal "'$config_directory' lacks a master.cf file"
|
||||
}
|
||||
|
||||
test -f $daemon_directory/main.cf ||
|
||||
fatal "Missing main.cf prototype: $daemon_directory/main.cf"
|
||||
test -f $daemon_directory/master.cf ||
|
||||
fatal "Missing master.cf prototype: $daemon_directory/master.cf"
|
||||
|
||||
# Create instance-specific directories
|
||||
#
|
||||
test -d $config_directory ||
|
||||
|
@ -385,11 +385,20 @@ static const char *cleanup_act(CLEANUP_STATE *state, char *context,
|
||||
if (STREQUAL(value, "PREPEND", command_len)) {
|
||||
if (*optional_text == 0) {
|
||||
msg_warn("PREPEND action without text in %s map", map_class);
|
||||
} else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0
|
||||
&& !is_header(optional_text)) {
|
||||
msg_warn("bad PREPEND header text \"%s\" in %s map -- "
|
||||
"need \"headername: headervalue\"",
|
||||
optional_text, map_class);
|
||||
} else if (strcmp(context, CLEANUP_ACT_CTXT_HEADER) == 0) {
|
||||
if (!is_header(optional_text)) {
|
||||
msg_warn("bad PREPEND header text \"%s\" in %s map -- "
|
||||
"need \"headername: headervalue\"",
|
||||
optional_text, map_class);
|
||||
} else {
|
||||
VSTRING *temp;
|
||||
|
||||
cleanup_act_log(state, "prepend", context, buf, optional_text);
|
||||
temp = vstring_strcpy(vstring_alloc(strlen(optional_text)),
|
||||
optional_text);
|
||||
cleanup_out_header(state, temp);
|
||||
vstring_free(temp);
|
||||
}
|
||||
} else {
|
||||
cleanup_act_log(state, "prepend", context, buf, optional_text);
|
||||
cleanup_out_string(state, REC_TYPE_NORM, optional_text);
|
||||
|
@ -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 "20150720"
|
||||
#define MAIL_VERSION_NUMBER "2.9.14"
|
||||
#define MAIL_RELEASE_DATE "20151010"
|
||||
#define MAIL_VERSION_NUMBER "2.9.15"
|
||||
|
||||
#ifdef SNAPSHOT
|
||||
# define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
|
||||
|
@ -1685,7 +1685,7 @@ int main(int argc, char **argv)
|
||||
case 'e':
|
||||
if ((code = EDIT_CMD_CODE(optarg)) < 0)
|
||||
msg_fatal("Invalid '-e' edit action '%s'. Specify '%s', "
|
||||
"'%s', '%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
|
||||
"'%s', '%s', '%s', '%s', '%s', '%s' or '%s'",
|
||||
optarg,
|
||||
EDIT_CMD_STR(EDIT_CMD_CREATE),
|
||||
EDIT_CMD_STR(EDIT_CMD_DESTROY),
|
||||
@ -1694,8 +1694,7 @@ int main(int argc, char **argv)
|
||||
EDIT_CMD_STR(EDIT_CMD_ENABLE),
|
||||
EDIT_CMD_STR(EDIT_CMD_DISABLE),
|
||||
EDIT_CMD_STR(EDIT_CMD_ASSIGN),
|
||||
EDIT_CMD_STR(EDIT_CMD_INIT),
|
||||
optarg);
|
||||
EDIT_CMD_STR(EDIT_CMD_INIT));
|
||||
if (cmd_mode != code)
|
||||
command_mode_count++;
|
||||
cmd_mode = code;
|
||||
|
@ -78,6 +78,7 @@
|
||||
#endif
|
||||
#endif
|
||||
#include <string.h>
|
||||
#include <errno.h>
|
||||
|
||||
/* Utility library. */
|
||||
|
||||
@ -177,6 +178,13 @@ char *scan_dir_next(SCAN_DIR *scan)
|
||||
#define STREQ(x,y) (strcmp((x),(y)) == 0)
|
||||
|
||||
if (info) {
|
||||
|
||||
/*
|
||||
* Fix 20150421: readdir() does not reset errno after reaching the
|
||||
* end-of-directory. This dates back all the way to the initial
|
||||
* implementation of 19970309.
|
||||
*/
|
||||
errno = 0;
|
||||
while ((dp = readdir(info->dir)) != 0) {
|
||||
if (STREQ(dp->d_name, ".") || STREQ(dp->d_name, "..")) {
|
||||
if (msg_verbose > 1)
|
||||
|
Loading…
x
Reference in New Issue
Block a user