Just one more...

I've found it useful to have remote_host available in my pre-conection plugin (specifically for enforcing concurrency limits specified in a rule based on host patterns). Attached is the patch I have applied to make this possible.

Now I'm off to bed!

-Jared
Index: qpsmtpd-forkserver
===================================================================
--- qpsmtpd-forkserver	(revision 967)
+++ qpsmtpd-forkserver	(working copy)
@@ -246,8 +246,13 @@
     # get local/remote hostname, port and ip address
     my ($port, $iaddr, $lport, $laddr, $nto_iaddr, $nto_laddr) = Qpsmtpd::TcpServer::lrpip($server, $client, $hisaddr);
 
+    # set enviroment variables
+    ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST})
+      = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
+
     my ($rc, @msg) = $qpsmtpd->run_hooks("pre-connection",
                                          remote_ip    => $nto_iaddr,
+                                         remote_host  => $ENV{TCPREMOTEHOST},
                                          remote_port  => $port,
                                          local_ip     => $nto_laddr,
                                          local_port   => $lport,
@@ -296,9 +301,6 @@
        ::log(LOGINFO, "Connection Timed Out"); 
        exit; };
   
-    # set enviroment variables
-    ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST}) = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
-    
     # don't do this!
     #$0 = "qpsmtpd-forkserver: $ENV{TCPREMOTEIP} / $ENV{TCPREMOTEHOST}";
   
Index: qpsmtpd-prefork
===================================================================
--- qpsmtpd-prefork	(revision 967)
+++ qpsmtpd-prefork	(working copy)
@@ -647,10 +647,15 @@
     my %children;
     shmem_opt(\%children, undef, $$, $iaddr);
 
+    # set enviroment variables
+    ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST})
+      = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
+
     my ($rc, @msg) =
       $qpsmtpd->run_hooks(
                           "pre-connection",
                           remote_ip   => $nto_iaddr,
+                          remote_host => $ENV{TCPREMOTEHOST},
                           remote_port => $port,
                           local_ip    => $nto_laddr,
                           local_port  => $lport,
@@ -694,9 +699,6 @@
         exit;
     };
 
-    # set enviroment variables
-    ($ENV{TCPLOCALIP}, $ENV{TCPREMOTEIP}, $ENV{TCPREMOTEHOST}) = Qpsmtpd::TcpServer::tcpenv($nto_laddr, $nto_iaddr);
-
     # run qpmsptd functions
     $SIG{__DIE__} = 'DEFAULT';
     eval {

Reply via email to