stas        2003/12/17 11:59:47

  Modified:    t/compat .cvsignore
               lib/Apache compat.pm
  Added:       t/response/TestCompat conn_rec.pm
  Log:
  2 new overridable compat functions:
  Apache::Connection::local_addr
  Apache::Connection::remote_addr
  + tests
  
  Revision  Changes    Path
  1.1                  modperl-2.0/t/response/TestCompat/conn_rec.pm
  
  Index: conn_rec.pm
  ===================================================================
  package TestCompat::conn_rec;
  
  use strict;
  use warnings FATAL => 'all';
  
  use Apache::TestUtil;
  use Apache::Test;
  
  use Apache::compat ();
  
  use Socket qw(sockaddr_in inet_ntoa);
  
  use Apache::Constants qw(OK);
  
  sub handler {
  
       my $r = shift;
  
       my $c = $r->connection;
  
       plan $r, tests => 4;
  
       Apache::compat::override_mp2_api('Apache::Connection::local_addr');
       my ($local_port, $local_addr) = sockaddr_in($c->local_addr);
       Apache::compat::restore_mp2_api('Apache::Connection::local_addr');
       t_debug inet_ntoa($local_addr) . " :$local_port";
       ok $local_port;
       ok inet_ntoa($local_addr);
  
       Apache::compat::override_mp2_api('Apache::Connection::remote_addr');
       my ($remote_port, $remote_addr) = sockaddr_in($c->remote_addr);
       Apache::compat::restore_mp2_api('Apache::Connection::remote_addr');
       t_debug inet_ntoa($remote_addr) . " :$remote_port";
       ok $remote_port;
       ok inet_ntoa($remote_addr);
  
       OK;
  }
  
  1;
  
  
  
  
  1.3       +1 -0      modperl-2.0/t/compat/.cvsignore
  
  Index: .cvsignore
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/t/compat/.cvsignore,v
  retrieving revision 1.2
  retrieving revision 1.3
  diff -u -u -r1.2 -r1.3
  --- .cvsignore        20 Mar 2003 05:49:11 -0000      1.2
  +++ .cvsignore        17 Dec 2003 19:59:47 -0000      1.3
  @@ -4,3 +4,4 @@
   apache_util.t
   apache_uri.t
   request.t
  +conn_rec.t
  
  
  
  1.92      +45 -6     modperl-2.0/lib/Apache/compat.pm
  
  Index: compat.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/lib/Apache/compat.pm,v
  retrieving revision 1.91
  retrieving revision 1.92
  diff -u -u -r1.91 -r1.92
  --- compat.pm 17 Dec 2003 18:55:25 -0000      1.91
  +++ compat.pm 17 Dec 2003 19:59:47 -0000      1.92
  @@ -57,29 +57,68 @@
       'Apache::RequestRec::notes' => <<'EOI',
   {
       require Apache::RequestRec;
  -    my $notes_sub = *Apache::RequestRec::notes{CODE};
  +    my $orig_sub = *Apache::RequestRec::notes{CODE};
       *Apache::RequestRec::notes = sub {
           my $r = shift;
           return wantarray()
  -            ?       ($r->table_get_set(scalar($r->$notes_sub), @_))
  -            : scalar($r->table_get_set(scalar($r->$notes_sub), @_));
  +            ?       ($r->table_get_set(scalar($r->$orig_sub), @_))
  +            : scalar($r->table_get_set(scalar($r->$orig_sub), @_));
       };
  -    $notes_sub;
  +    $orig_sub;
   }
   EOI
   
       'Apache::RequestRec::finfo' => <<'EOI',
   {
       require APR::Finfo;
  -    my $finfo_sub = *APR::Finfo::finfo{CODE};
  +    my $orig_sub = *APR::Finfo::finfo{CODE};
       sub Apache::RequestRec::finfo {
           my $r = shift;
           stat $r->filename;
           \*_;
       }
  -    $finfo_sub;
  +    $orig_sub;
   }
   EOI
  +
  +    'Apache::Connection::local_addr' => <<'EOI',
  +{
  +    require Apache::Connection;
  +    require Socket;
  +    require APR::SockAddr;
  +    my $orig_sub = *Apache::Connection::local_addr{CODE};
  +    *Apache::Connection::local_addr = sub {
  +        my $c = shift;
  +        Socket::pack_sockaddr_in($c->$orig_sub->port,
  +                                 Socket::inet_aton($c->$orig_sub->ip_get));
  +    };
  +    $orig_sub;
  +}
  +EOI
  +
  +    'Apache::Connection::remote_addr' => <<'EOI',
  +{
  +    require Apache::Connection;
  +    require APR::SockAddr;
  +    require Socket;
  +    my $orig_sub = *Apache::Connection::remote_addr{CODE};
  +    *Apache::Connection::remote_addr = sub {
  +        my $c = shift;
  +        if (@_) {
  +            my $addr_in = shift;
  +            my($port, $addr) = Socket::unpack_sockaddr_in($addr_in);
  +            $c->$orig_sub->ip_set($addr);
  +            $c->$orig_sub->port_set($port);
  +        }
  +        else {
  +            Socket::pack_sockaddr_in($c->$orig_sub->port,
  +                                     Socket::inet_aton($c->$orig_sub->ip_get));
  +        }
  +    };
  +    $orig_sub;
  +}
  +EOI
  +
   );
   
   my %overridden_mp2_api = ();
  
  
  

Reply via email to