stas 2004/06/03 01:20:13
Modified: t/protocol echo_filter.t
t/protocol/TestProtocol echo_filter.pm
Log:
adjust the test to actually do what the name suggests: filtering in
protocol handlers
Revision Changes Path
1.4 +1 -1 modperl-2.0/t/protocol/echo_filter.t
Index: echo_filter.t
===================================================================
RCS file: /home/cvs/modperl-2.0/t/protocol/echo_filter.t,v
retrieving revision 1.3
retrieving revision 1.4
diff -u -u -r1.3 -r1.4
--- echo_filter.t 25 Mar 2004 20:51:15 -0000 1.3
+++ echo_filter.t 3 Jun 2004 08:20:13 -0000 1.4
@@ -16,5 +16,5 @@
for (@test_strings) {
print $socket "$_\n";
chomp(my $reply = <$socket>||'');
- ok t_cmp($_, $reply);
+ ok t_cmp(uc($_), $reply);
}
1.14 +29 -13 modperl-2.0/t/protocol/TestProtocol/echo_filter.pm
Index: echo_filter.pm
===================================================================
RCS file: /home/cvs/modperl-2.0/t/protocol/TestProtocol/echo_filter.pm,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -u -r1.13 -r1.14
--- echo_filter.pm 1 Jun 2004 23:36:47 -0000 1.13
+++ echo_filter.pm 3 Jun 2004 08:20:13 -0000 1.14
@@ -1,34 +1,46 @@
package TestProtocol::echo_filter;
+# see also TestFilter::both_str_con_add
+
use strict;
use warnings FATAL => 'all';
use Apache::Connection ();
+use APR::Socket ();
use APR::Bucket ();
use APR::Brigade ();
-use APR::Util ();
use APR::Error ();
-use Apache::Filter ();
-use APR::Const -compile => qw(SUCCESS EOF);
+use base qw(Apache::Filter);
+
+use APR::Const -compile => qw(SUCCESS EOF SO_NONBLOCK);
use Apache::Const -compile => qw(OK MODE_GETLINE);
+use constant BUFF_LEN => 1024;
+
+sub uc_filter : FilterConnectionHandler {
+ my $filter = shift;
+
+ while ($filter->read(my $buffer, BUFF_LEN)) {
+ $filter->print(uc $buffer);
+ }
+
+ return Apache::OK;
+}
+
sub handler {
- my Apache::Connection $c = shift;
+ my $c = shift;
- # XXX: workaround to a problem on some platforms (solaris, bsd,
- # etc), where Apache 2.0.49+ forgets to set the blocking mode on
- # the socket
- require APR::Socket;
- BEGIN { use APR::Const -compile => qw(SO_NONBLOCK); }
+ # starting from Apache 2.0.49 several platforms require you to set
+ # the socket to a blocking IO mode
$c->client_socket->opt_set(APR::SO_NONBLOCK => 0);
my $bb = APR::Brigade->new($c->pool, $c->bucket_alloc);
- for (;;) {
- my $rv = $c->input_filters->get_brigade($bb, Apache::MODE_GETLINE);
- if ($rv != APR::SUCCESS && $rv != APR::EOF) {
- my $error = APR::Error::strerror($rv);
+ while (1) {
+ my $rc = $c->input_filters->get_brigade($bb, Apache::MODE_GETLINE);
+ if ($rc != APR::SUCCESS && $rc != APR::EOF) {
+ my $error = APR::Error::strerror($rc);
warn __PACKAGE__ . ": get_brigade: $error\n";
last;
}
@@ -49,3 +61,7 @@
}
1;
+__END__
+PerlModule TestProtocol::echo_filter
+PerlOutputFilterHandler TestProtocol::echo_filter::uc_filter
+