tls/tls_client.c, tls/tls_misc.c, tls/tls_proxy.h,
tls/tls_proxy_context_print.c, tls/tls_proxy_context_scan.c,
tls/tls_server.c.
+
+20181202
+
+ Bugfix (introduced: postfix-2.11): with posttls-finger,
+ connections to unix-domain servers always resulted in "Failed
+ to establish session" even after a connection was established.
+ Jaroslav Skarva. File: posttls-finger/posttls-finger.c.
+
+20181227 (a forgotten bugfix from 20180707)
+
+ Bugfix (introduced: Postfix 3.0): with smtputf8_enable=yes,
+ table lookups could casefold the search string when searching
+ a lookup table that does not use fixed-string keys (regexp,
+ pcre, tcp, etc.). Historically, Postfix would not case-fold
+ the search string with such tables. File: util/dict_utf8.c.
+
+20190217
+
+ Cleanup: when the master daemon runs with PID=1 (init mode),
+ reap orhpan processes from non-Postfix code running in the
+ same container, instead of terminating with a panic. File:
+ master/master_spawn.c.
* Patches change both the patchlevel and the release date. Snapshots have no
* patchlevel; they change the release date only.
*/
-#define MAIL_RELEASE_DATE "20181124"
-#define MAIL_VERSION_NUMBER "3.3.2"
+#define MAIL_RELEASE_DATE "20190226"
+#define MAIL_VERSION_NUMBER "3.3.3"
#ifdef SNAPSHOT
#define MAIL_VERSION_DATE "-" MAIL_RELEASE_DATE
if (msg_verbose)
msg_info("master_reap_child: pid %d", pid);
if ((proc = (MASTER_PROC *) binhash_find(master_child_table,
- (void *) &pid, sizeof(pid))) == 0)
+ (void *) &pid, sizeof(pid))) == 0) {
+ if (init_mode)
+ continue; /* non-Postfix process */
msg_panic("master_reap: unknown pid: %d", pid);
+ }
serv = proc->serv;
#define MASTER_KILL_SIGNAL SIGTERM
*/
if (state->smtp == 0) {
if (strncmp(dest, "unix:", 5) == 0) {
- connect_unix(state, dest + 5);
+ state->stream = connect_unix(state, dest + 5);
if (!state->stream)
msg_info("Failed to establish session to %s: %s",
dest, vstring_str(state->why->reason));
/*
* Casefold UTF-8.
*/
- if (fold_flag != 0 && (fold_flag & (dict->flags & DICT_FLAG_FIXED) ?
- DICT_FLAG_FOLD_FIX : DICT_FLAG_FOLD_MUL)) {
+ if (fold_flag != 0
+ && (fold_flag & ((dict->flags & DICT_FLAG_FIXED) ?
+ DICT_FLAG_FOLD_FIX : DICT_FLAG_FOLD_MUL))) {
if (dict->fold_buf == 0)
dict->fold_buf = vstring_alloc(10);
return (casefold(dict->fold_buf, string));