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;
     }

Reply via email to