diff --git a/postfix/HISTORY b/postfix/HISTORY index 36a2f2329..918563b10 100644 --- a/postfix/HISTORY +++ b/postfix/HISTORY @@ -15992,3 +15992,8 @@ Apologies for any names omitted. this increases the database update frequency too much then we'll need to make dnsbl result non-cachable. Files: postscreen/postscreen_dnsbl.c, global/mail_params.h. + +20100915 + + Bugfix (introduced 20100914): missing precondition for + call-back notification. File: postscreen/dnsblog.c. diff --git a/postfix/README_FILES/POSTSCREEN_README b/postfix/README_FILES/POSTSCREEN_README index 1e4077ac9..a11a3d05c 100644 --- a/postfix/README_FILES/POSTSCREEN_README +++ b/postfix/README_FILES/POSTSCREEN_README @@ -393,10 +393,10 @@ whitelist entry that excludes the client IP address from further tests until the temporary whitelist entry expires, as controlled with the postscreen_*_ttl parameters. -When no "deep protocol tests" are configured, postscreen(8) passes the "live" -connection to a Postfix SMTP server process. The client can then continue as if -postscreen(8) never even existed (except for the short postscreen_greet_wait -delay). +When no "deep protocol tests" are configured, postscreen(8) hands off the +"live" connection to a Postfix SMTP server process. The client can then +continue as if postscreen(8) never even existed (except for the short +postscreen_greet_wait delay). When any "deep protocol tests" are configured, postscreen(8) cannot hand off the "live" connection to a Postfix SMTP server process in the middle of the diff --git a/postfix/html/POSTSCREEN_README.html b/postfix/html/POSTSCREEN_README.html index f76d1050c..3843d51a0 100644 --- a/postfix/html/POSTSCREEN_README.html +++ b/postfix/html/POSTSCREEN_README.html @@ -540,7 +540,7 @@ address from further tests until the temporary whitelist entry expires, as controlled with the postscreen_*_ttl parameters.

When no "deep protocol tests" are -configured, postscreen(8) passes the "live" connection to a Postfix +configured, postscreen(8) hands off the "live" connection to a Postfix SMTP server process. The client can then continue as if postscreen(8) never even existed (except for the short postscreen_greet_wait delay).

diff --git a/postfix/proto/POSTSCREEN_README.html b/postfix/proto/POSTSCREEN_README.html index eea09e735..036015f0d 100644 --- a/postfix/proto/POSTSCREEN_README.html +++ b/postfix/proto/POSTSCREEN_README.html @@ -540,7 +540,7 @@ address from further tests until the temporary whitelist entry expires, as controlled with the postscreen_*_ttl parameters.

When no "deep protocol tests" are -configured, postscreen(8) passes the "live" connection to a Postfix +configured, postscreen(8) hands off the "live" connection to a Postfix SMTP server process. The client can then continue as if postscreen(8) never even existed (except for the short postscreen_greet_wait delay).

diff --git a/postfix/src/global/mail_version.h b/postfix/src/global/mail_version.h index 47369cd68..d065a2c6d 100644 --- a/postfix/src/global/mail_version.h +++ b/postfix/src/global/mail_version.h @@ -20,7 +20,7 @@ * Patches change both the patchlevel and the release date. Snapshots have no * patchlevel; they change the release date only. */ -#define MAIL_RELEASE_DATE "20100914" +#define MAIL_RELEASE_DATE "20100915" #define MAIL_VERSION_NUMBER "2.8" #ifdef SNAPSHOT diff --git a/postfix/src/postscreen/postscreen_dnsbl.c b/postfix/src/postscreen/postscreen_dnsbl.c index f40520f8e..fffc6b49b 100644 --- a/postfix/src/postscreen/postscreen_dnsbl.c +++ b/postfix/src/postscreen/postscreen_dnsbl.c @@ -357,19 +357,16 @@ static void ps_dnsbl_receive(int event, char *context) } if (reply_argv != 0) argv_free(reply_argv); - } else { - msg_warn("%s: unexpected event: %d", myname, event); + + /* + * Notify the requestor(s) that the result is ready to be picked up. + * If this call isn't made, clients have to sit out the entire + * pre-handshake delay. + */ + score->pending_lookups -= 1; + if (score->pending_lookups == 0) + PS_CALL_BACK_NOTIFY(score, PS_NULL_EVENT); } - - /* - * We're done with this stream. Notify the requestor(s) that the result - * is ready to be picked up. If this call isn't made, clients have to sit - * out the entire pre-handshake delay. - */ - score->pending_lookups -= 1; - if (score->pending_lookups == 0) - PS_CALL_BACK_NOTIFY(score, PS_NULL_EVENT); - vstream_fclose(stream); }