On Thu, 08 May 2008 20:57:12 +0200
Stefan Priebe <[EMAIL PROTECTED]> wrote:
> At the moment i'm using qpsmtpd 0.40. Has there anything changed since 
> that - regarding tls? Otherwise it will not work. We've discussed this 
There were some changes, which do not affect this problem. With your
tls version and the current trunk this also works.

> point a few month ago - it was / is a bug / problem in the 
> IO::Socket::SSL Module or tls plugin.
Yes, seems like I missed to undef the socket at that time. My first
attempt looked like this patch without the 
  $self->connection->notes('tls_socket', undef);
line. Seems like it never goes out of scope, see IO::Socket::SSL ->
LIMITATIONS. 
Hmm, a Qpsmtpd::Connection::DESTROY is just called at the beginning of
an SSL connection (when the clone()d connection is set to the current).

This also works, with no workaround in plugins/tls. Matt, Ask: Ok to
commit this and remove the tls-prefork workaround (maybe also undef any
transaction notes)?

Index: lib/Qpsmtpd/TcpServer/Prefork.pm
===================================================================
--- lib/Qpsmtpd/TcpServer/Prefork.pm    (revision 890)
+++ lib/Qpsmtpd/TcpServer/Prefork.pm    (working copy)
@@ -59,6 +59,7 @@
   $self->log(LOGINFO,"click, disconnecting");
   $self->SUPER::disconnect(@_);
   $self->run_hooks("post-connection");
+  $self->connection->reset;
   die "disconnect_tcpserver";
 }
 
Index: lib/Qpsmtpd/Connection.pm
===================================================================
--- lib/Qpsmtpd/Connection.pm   (revision 890)
+++ lib/Qpsmtpd/Connection.pm   (working copy)
@@ -108,6 +108,12 @@
   $self->{_notes}->{$key};
 }
 
+sub reset {
+   my $self = shift;
+   $self->{_notes} = undef;
+   $self = $self->new;
+}
+
 1;
 
 __END__

Reply via email to