Adding Post Data to a SubRequest

Jordan Michaels <[email protected]>
Newsgroups gmane.comp.apache.mod-perl
Message-ID <[email protected]>
I've been working to find a solution to adding Post data to a sub 
request for a few days now (since last week when I posted about 
retrieving the POST data in the first place).

Adding the POST data to the $subr object using write doesn't work, 
because it tries to add it to the output response and not the input request.

I then found a message on google that indicated that you could modify 
the incoming request POST data via a filter, so I've written something 
similar to the following:

------------------------------------------
use Apache2::SubRequest  ();
use Apache2::ServerUtil  ();
use Apache2::RequestUtil ();
use Apache2::RequestRec  ();
use Apache2::RequestIO   ();
use Apache2::Filter      ();
use Apache2::Log         ();
use APR::Table           ();
use APR::Brigade         ();
use APR::Bucket          ();

sub handler {
	my $r                   = shift;
	our @ProxyInputContent  = ();

	sub proxy_input_filter {
		my ( $f, $bb ) = @_;
		my $ba = $bb->bucket_alloc();
		my $newBucket = '';
		# remove the existing buckets
		$bb->cleanup;
		# create buckets using the orig request POST data
		foreach ( @ProxyInputContent ) {
			# the current array element will be represented as $_
			# create a new bucket
			$newBucket = APR::Bucket->new($ba, $_);
			# put the new bucket in the subr brigade
			$bb->insert_head($newBucket);
		}
		# the subrequest should now contain the post data
		return Apache2::Const::OK;
	}

	# handle POST requests
	if ( $r->method() eq "POST" ) {
		
		# set the subrequest method to also be a post
		$subr->method('POST');
		
		# create a post data buffer
		my $PostBuffer = '';
		
		# loop over each line of data
		while($r->read($PostBuffer, 1024)) {
			
			# add the content to the ProxyInputContent Array
			push(@ProxyInputContent, $PostBuffer);
		}
		
		# make the subrequest go through the input filter so we can add the 
post data to it.
		$subr->add_input_filter( \&proxy_input_filter );
		
	}

	# perform the proxy request
	$subr->run;
------------------------------------------

However, this doesn't work. I still don't see the POST data on the 
Tomcat side.

And, being the noob I am, I haven't yet figured out how to log the data 
from the filter to I can make sure I'm doing it right.

So, my questions are simple:

1) Is there an ideal way to add POST data to a subrequest that I'm 
missing here?

2) Is it possible to log data from a filter so I can debug it?

Thank you *so much* for your help and patience with this. I truly 
appreciate your time.

-- 
Warm Regards,
Jordan Michaels
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.