Author: radu
Date: Wed Apr 30 23:20:45 2008
New Revision: 881
Modified:
trunk/lib/Qpsmtpd/PollServer.pm
Log:
$msg is an arrayref, dereference it before passing to $self->respond.
Before this, the SMTP responses contained the reference stringification
instead of the real message, when a plugin denied the mail at the DATA
stage:
554 ARRAY(0x9362f10)
Modified: trunk/lib/Qpsmtpd/PollServer.pm
==============================================================================
--- trunk/lib/Qpsmtpd/PollServer.pm (original)
+++ trunk/lib/Qpsmtpd/PollServer.pm Wed Apr 30 23:20:45 2008
@@ -183,22 +183,26 @@
return;
}
elsif ($rc == DENY) {
- $self->respond(554, $msg || "Message denied");
+ $msg->[0] ||= "Message denied";
+ $self->respond(554, @$msg);
$self->reset_transaction();
return;
}
elsif ($rc == DENYSOFT) {
- $self->respond(451, $msg || "Message denied temporarily");
+ $msg->[0] ||= "Message denied temporarily";
+ $self->respond(451, @$msg);
$self->reset_transaction();
return;
}
elsif ($rc == DENY_DISCONNECT) {
- $self->respond(554, $msg || "Message denied");
+ $msg->[0] ||= "Message denied";
+ $self->respond(554, @$msg);
$self->disconnect;
return;
}
elsif ($rc == DENYSOFT_DISCONNECT) {
- $self->respond(451, $msg || "Message denied temporarily");
+ $msg->[0] ||= "Message denied temporarily";
+ $self->respond(451, @$msg);
$self->disconnect;
return;
}