the attached patch makes sure that remote_port is set whether we're
running with tcpserver or using either of the standalone servers. (it
also defines TCPREMOTEPORT for forkserver, just to be consistent.)

jim
Index: qpsmtpd-forkserver
===================================================================
RCS file: /cvs/public/qpsmtpd/qpsmtpd-forkserver,v
retrieving revision 1.13
diff -u -r1.13 qpsmtpd-forkserver
--- qpsmtpd-forkserver  29 Nov 2004 03:37:38 -0000      1.13
+++ qpsmtpd-forkserver  4 Dec 2004 08:37:51 -0000
@@ -163,6 +163,7 @@
     $ENV{TCPLOCALIP} = inet_ntoa($laddr);
     # my ($port, $iaddr) = sockaddr_in($hisaddr);
     $ENV{TCPREMOTEIP} = inet_ntoa($iaddr);
+    $ENV{TCPREMOTEPORT} = $port;
     $ENV{TCPREMOTEHOST} = gethostbyaddr($iaddr, AF_INET) || "Unknown";
 
     # don't do this!
Index: lib/Qpsmtpd/SelectServer.pm
===================================================================
RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/SelectServer.pm,v
retrieving revision 1.8
diff -u -r1.8 SelectServer.pm
--- lib/Qpsmtpd/SelectServer.pm 5 Mar 2004 12:46:23 -0000       1.8
+++ lib/Qpsmtpd/SelectServer.pm 4 Dec 2004 08:37:51 -0000
@@ -63,6 +63,7 @@
             elsif (my $qpclient = $lookup{$client}) {
                 my $packet = $res->bgread($client);
                 my $ip = $qpclient->peerhost;
+                my $port = $qpclient->peerport;
                 my $hostname = $ip;
                 if ($packet) {
                     foreach my $rr ($packet->answer) {
@@ -81,7 +82,7 @@
                 $inbuffer{$qpclient} = '';
                 $outbuffer{$qpclient} = '';
                 $ready{$qpclient} = [];
-                $qp->start_connection($ip, $hostname);
+                $qp->start_connection($ip, $port, $hostname);
                 $qp->load_plugins;
                 my $rc = $qp->start_conversation;
                 if ($rc != DONE) {
@@ -174,6 +175,7 @@
 sub start_connection {
     my $self = shift;
     my $remote_ip = shift;
+    my $remote_port = shift;
     my $remote_host = shift;
 
     $self->log(LOGNOTICE, "Connection from $remote_host [$remote_ip]");
@@ -186,6 +188,7 @@
 
     $self->SUPER::connection->start(remote_info => $remote_info,
                                     remote_ip   => $remote_ip,
+                                    remote_port => $remote_port,
                                     remote_host => $remote_host,
                                     @_);
 }
Index: lib/Qpsmtpd/TcpServer.pm
===================================================================
RCS file: /cvs/public/qpsmtpd/lib/Qpsmtpd/TcpServer.pm,v
retrieving revision 1.14
diff -u -r1.14 TcpServer.pm
--- lib/Qpsmtpd/TcpServer.pm    27 Nov 2004 06:41:06 -0000      1.14
+++ lib/Qpsmtpd/TcpServer.pm    4 Dec 2004 08:37:51 -0000
@@ -18,6 +18,7 @@
     my $remote_host = $ENV{TCPREMOTEHOST} || ( $ENV{TCPREMOTEIP} ? 
"[$ENV{TCPREMOTEIP}]" : "[noip!]");
     my $remote_info = $ENV{TCPREMOTEINFO} ? "[EMAIL PROTECTED]" : $remote_host;
     my $remote_ip   = $ENV{TCPREMOTEIP};
+    my $remote_port = $ENV{TCPREMOTEPORT};
     $self->log(LOGNOTICE, "Connection from $remote_info [$remote_ip]");
 
     # if the local dns resolver doesn't filter it out we might get
@@ -31,6 +32,7 @@
 
     $self->SUPER::connection->start(remote_info => $remote_info,
                                    remote_ip   => $remote_ip,
+                                   remote_port => $remote_port,
                                    remote_host => $remote_host,
                                    @_);
 }

Reply via email to