perl-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Ken Williams" <>
Subject Looking for magic in Apache->request
Date Sat, 31 Mar 2001 03:04:38 GMT

Consider the following code under mod_perl (current CVS 1.25):

   # Get the original request object
   my $r = Apache->request;

   # Subclass Apache and install new $r
   my $r2 = bless {'_r' => $r}, 'OtherPackage';
   @OtherPackage::ISA = ('Apache');

   # Verify that the changes took effect
   $r = Apache->request;
   print "New \$r: $r<br>\n";

This doesn't work as intended, because Apache->request($r2) extracts the
original request from $r2 and stores that internally.

The thing I can't figure out from the XS code is how/where
Apache->request calls sv2request_rec(), which actually does the
extraction work.  Somehow it's automatically converted, because I see no
manual conversion in the Apache->request code below:

request(self, r=NULL)
    SV *self
    Apache r

    self = self;
    if(items > 1) perl_request_rec(r);

Any pointers?

The reason I'm asking is that the current behavior of
Apache->request($r) makes it really hard to subclass Apache::Registry
and the like, because lots of code (like call Apache->request to
get the current request object.

  -------------------                            -------------------
  Ken Williams                             Last Bastion of Euclidity                            The Math Forum

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message