stas        2004/05/21 16:12:55

  Modified:    t/response/TestAPR ipsubnet.pm
               todo     api_status
               xs/APR/IpSubnet APR__IpSubnet.h
               .        Changes
  Log:
  - APR::IpSubnet::new() now throws APR::Error exception (not returning rc)
  - more tests
  
  Revision  Changes    Path
  1.2       +34 -11    modperl-2.0/t/response/TestAPR/ipsubnet.pm
  
  Index: ipsubnet.pm
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/t/response/TestAPR/ipsubnet.pm,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- ipsubnet.pm       21 May 2004 19:25:46 -0000      1.1
  +++ ipsubnet.pm       21 May 2004 23:12:55 -0000      1.2
  @@ -19,7 +19,7 @@
       my $c = $r->connection;
       my $p = $r->pool;
   
  -    plan $r, tests => 5;
  +    plan $r, tests => 7;
   
       my $ip = $c->remote_ip;
   
  @@ -28,22 +28,45 @@
       ok t_cmp($ip, $c->remote_addr->ip_get,
                "remote_ip eq remote_addr->ip_get");
   
  -    my $ipsub = APR::IpSubnet->new($p, $ip);
  +    {
  +        my $ipsub = APR::IpSubnet->new($p, $ip);
   
  -    ok $ipsub->test($c->remote_addr);
  +        ok $ipsub->test($c->remote_addr);
  +    }
   
  -    my $reverse_remote_ip = scalar reverse $ip;
  +    # use IP mask
  +    {
  +        my $ipsub = APR::IpSubnet->new($p, $ip, "255.0.0.0");
   
  -    ok t_cmp($reverse_remote_ip, scalar reverse($c->remote_addr->ip_get),
  -             "reversed remote_ip eq reversed remote_addr->ip_get");
  +        ok $ipsub->test($c->remote_addr);
  +    }
   
  -    $ipsub = APR::IpSubnet->new($p, $reverse_remote_ip);
  +    # fail match
  +    {
  +        if ($ip =~ /^\d+\.\d+\.\d+\.\d+$/) {
  +            # arrange for the subnet to match only one IP, which is
  +            # one digit off the client IP, ensuring a mismatch
  +            (my $mismatch = $ip) =~ s/(?<=\.)(\d+)$/$1 == 255 ? $1-1 : $1+1/e;
  +            t_debug($mismatch);
  +            my $ipsub = APR::IpSubnet->new($p, $mismatch, $mismatch);
  +            ok ! $ipsub->test($c->remote_addr);
  +        }
  +        else {
  +            # XXX: similar ipv6 trick?
  +            ok 1;
  +        }
  +    }
   
  -    if (!$ipsub) {
  -        ok 1; #this happens on win32
  +    # bogus IP
  +    {
  +        my $ipsub = eval { APR::IpSubnet->new($p, "345.234.678.987") };
  +        ok t_cmp(qr/The specified IP address is invalid/, $@, "bogus IP");
       }
  -    else {
  -        ok ! $ipsub->test($c->remote_addr);
  +
  +    # bogus mask
  +    {
  +        my $ipsub = eval { APR::IpSubnet->new($p, $ip, "255.0") };
  +        ok t_cmp(qr/The specified network mask is invalid/, $@, "bogus mask");
       }
   
       Apache::OK;
  
  
  
  1.8       +1 -2      modperl-2.0/todo/api_status
  
  Index: api_status
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/todo/api_status,v
  retrieving revision 1.7
  retrieving revision 1.8
  diff -u -u -r1.7 -r1.8
  --- api_status        21 May 2004 19:25:46 -0000      1.7
  +++ api_status        21 May 2004 23:12:55 -0000      1.8
  @@ -80,8 +80,7 @@
   VV src/docs/2.0/api/APR/Error.pod
   
   -- src/docs/2.0/api/APR/Finfo.pod
  --- src/docs/2.0/api/APR/IpSubnet.pod
  -
  +VV src/docs/2.0/api/APR/IpSubnet.pod
   +V src/docs/2.0/api/APR/PerlIO.pod
   
   
  
  
  
  1.2       +2 -5      modperl-2.0/xs/APR/IpSubnet/APR__IpSubnet.h
  
  Index: APR__IpSubnet.h
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/xs/APR/IpSubnet/APR__IpSubnet.h,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -u -r1.1 -r1.2
  --- APR__IpSubnet.h   21 May 2004 19:25:44 -0000      1.1
  +++ APR__IpSubnet.h   21 May 2004 23:12:55 -0000      1.2
  @@ -18,11 +18,8 @@
                                            const char *ipstr,
                                            const char *mask_or_numbits)
   {
  -    apr_status_t status;
       apr_ipsubnet_t *ipsub = NULL;
  -    status = apr_ipsubnet_create(&ipsub, ipstr, mask_or_numbits, p);
  -    if (status != APR_SUCCESS) {
  -        return NULL;
  -    }
  +    MP_RUN_CROAK(apr_ipsubnet_create(&ipsub, ipstr, mask_or_numbits, p),
  +                 "APR::IpSubnet::new");
       return ipsub;
   }
  
  
  
  1.377     +3 -0      modperl-2.0/Changes
  
  Index: Changes
  ===================================================================
  RCS file: /home/cvs/modperl-2.0/Changes,v
  retrieving revision 1.376
  retrieving revision 1.377
  diff -u -u -r1.376 -r1.377
  --- Changes   21 May 2004 22:01:16 -0000      1.376
  +++ Changes   21 May 2004 23:12:55 -0000      1.377
  @@ -12,6 +12,9 @@
   
   =item 1.99_15-dev
   
  +APR::IpSubnet::new() now throws APR::Error exception (not returning
  +rc) [Stas]
  +
   rename package APR::NetLib -> APR::IpSubnet to match the class name
   [Stas]
   
  
  
  

Reply via email to