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,
@_);
}