I've made some progress since my stupid and, admitedly, rather careless,
error with the upload_hook extended by libapreq. I finally gave up on
debugging it in it's current context and made a seperate light module setup
just to test. Currently, I'm using the Apache::Test::UploadMeter namespace
(if this all works, I suppose I'll copy this project to CPAN under the
Apache::UploadMeter namespace). In any case, here's what I've got so far:
Apache/Test/UploadMeter.pm
---
package Apache::Test::UploadMeter;
use strict;
use warnings qw(all);
use diagnostics;
use vars qw($VERSION @ISA @EXPORT @EXPORT_OK %EXPORT_TAGS);
use Apache;
use Apache::Constants qw(OK DECLINED HTTP_MOVED_TEMPORARILY BAD_REQUEST
NOT_FOUND);
use Cache::FileCache; # For Win32 compatibility - required for IPC from
upload_hook to upload_meter
BEGIN {
use Exporter ();
$VERSION=0.01;
@ISA=qw(Exporter);
@EXPORT=();
@EXPORT_OK=qw ( );
%EXPORT_TAGS=();
}
### Version History
# 0.01 : Oct 14, 2001 - Started
### Globals
my
%cache_options=('default_expires_in'=>900,'auto_purge_interval'=>60,'namespa
ce'=>'u_hook'); #If the hooks don't get called in 15 minute, assume it's
done
sub handler
{
my $r=shift;
### Upload hook handler
my $hook_handler=sub {
my ($upload, $buf, $len, $hook_data)=@_;
Apache->log_error("$hook_data: got $len bytes for ".$upload->name);
};
my $q=Apache::Request->instance($r,
HOOK_DATA=>"hardcoded",UPLOAD_HOOK=>$hook_handler,
TEMP_DIR=>"/home/www/spool");
my $file=$q->upload;
my $fname=$file->filename;
$r->send_http_header('text/plain');
$r->print("done\n\n$fname");
return OK;
}
1;
__END__
============
httpd.conf
---
<Location /test>
SetHandler perl-script
PerlHandler Apache::Test::UploadMeter
</Location>
============
When doing an upload from a blank HTML page (just a form with an upload
field), I get the following output in the browser:
done
D:\EXPORTS\Log.txt
...and the following output in error_log:
[Sun Oct 14 16:49:12 2001] [error] [client 192.168.1.1] request failed:
error reading the headers
Something's obviously not working right. The only clue I have is that the
error is _definately_ caused by the upload hook, because when I remove that
from the code, I get no errors in error_log. Any help on this would be
appreciated...
Issac
Internet is a wonderful mechanism for making a fool of
yourself in front of a very large audience.
--Anonymous
Moving the mouse won't get you into trouble... Clicking it might.
--Anonymous
PGP Key 0xE0FA561B - Fingerprint:
7E18 C018 D623 A57B 7F37 D902 8C84 7675 E0FA 561B