Hi,
I'm trying to write an input filter that will read the request body data, do
some transformation, and then write the output to a file using mod_dav:
<Location /davtest/>
DAV on
PerlInputFilterHandler FileDataLog::input
</Location>
The problem I'm having is that whenever I try to PUT a file that contains
null characters (\0), the data that's written to the file is not the data
that is printed from the filter. I've set up a basic filter to simply send
the data it reads on to the next stage in order to troubleshoot:
while($f->read(my $buffer, 16)) {
print STDERR unpack('H*', $buffer), "\n";
$f->print($buffer)
}
but I can't seem to get it to work. Here is an example via a telnet
session:
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
PUT /members/jeff/test HTTP/1.1
Host: 127.0.0.1:9080
Content-Length: 11
[EMAIL PROTECTED]
HTTP/1.1 204 No Content
Date: Mon, 15 Mar 2004 20:51:26 GMT
Server: Apache/2.0.48 (Unix)
Content-Length: 0
Connection: close
Content-Type: text/plain; charset=ISO-8859-1
The filter seems to be sending the correct data along:
[EMAIL PROTECTED] jeff]# tail /usr/local/apache2/logs/error_log
3132330134353600373839
1 2 3 \1 4 5 6 \0 7 8 9
but the file does not have the correct data:
[EMAIL PROTECTED] jeff]# od -x test
0000000 3231 0133 3534 0036 0001 0000
0000013
Any help would be greatly appreciated.
--
Report problems: http://perl.apache.org/bugs/
Mail list info: http://perl.apache.org/maillist/modperl.html
List etiquette: http://perl.apache.org/maillist/email-etiquette.html