Randy, Steve, do you still have crashes with the following versions of TestProtocol/echo_bbs2.pm test? Philippe no longer can reproduce it.
Please try the following 2 variations. Thanks!
If they don't fail is it possible that it was a problem in httpd and since you use a newer version it just was solved in apr/httpd?
package TestProtocol::echo_bbs2;
# similar to TestProtocol::echo_bbs but here re-using one bucket # brigade for input and output, using flatten to slurp all the data in # the bucket brigade, and cleanup to get rid of the old buckets
use strict; use warnings FATAL => 'all';
use Apache::Connection (); use APR::Socket (); use APR::Bucket (); use APR::Brigade (); use APR::Error ();
use Apache::Const -compile => qw(OK MODE_GETLINE); use APR::Const -compile => qw(SUCCESS EOF SO_NONBLOCK);
sub handler {
my $c = shift; # 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_in = APR::Brigade->new($c->pool, $c->bucket_alloc);
my $last = 0;
while (1) {
my $bb_out = APR::Brigade->new($c->pool, $c->bucket_alloc); my $rc = $c->input_filters->get_brigade($bb_in,
Apache::MODE_GETLINE);
last if $rc == APR::EOF;
die APR::Error::strerror($rc) unless $rc == APR::SUCCESS; next unless $bb_in->flatten(my $data);
#warn "read: [$data]\n";
last if $data =~ /^[\r\n]+$/;$bb_in->cleanup;
# transform data here
my $bucket = APR::Bucket->new(uc $data);
$bb_out->insert_tail($bucket);$c->output_filters->fflush($bb_out);
# XXX: add DESTROY and remove explicit calls
$bb_out->destroy;
} $bb_in->destroy;
Apache::OK;
}1;
and one more:
package TestProtocol::echo_bbs2;
# similar to TestProtocol::echo_bbs but here re-using one bucket # brigade for input and output, using flatten to slurp all the data in # the bucket brigade, and cleanup to get rid of the old buckets
use strict; use warnings FATAL => 'all';
use Apache::Connection (); use APR::Socket (); use APR::Bucket (); use APR::Brigade (); use APR::Error ();
use Apache::Const -compile => qw(OK MODE_GETLINE); use APR::Const -compile => qw(SUCCESS EOF SO_NONBLOCK);
sub handler {
my $c = shift; # 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_in = APR::Brigade->new($c->pool, $c->bucket_alloc);
my $bb_out = APR::Brigade->new($c->pool, $c->bucket_alloc); my $last = 0;
while (1) {
my $rc = $c->input_filters->get_brigade($bb_in,
Apache::MODE_GETLINE);
last if $rc == APR::EOF;
die APR::Error::strerror($rc) unless $rc == APR::SUCCESS; next unless $bb_in->flatten(my $data);
#warn "read: [$data]\n";
last if $data =~ /^[\r\n]+$/; # transform data here
my $bucket = APR::Bucket->new(uc $data);
$bb_out->insert_tail($bucket);$c->output_filters->fflush($bb_out);
$bb_in->cleanup;
$bb_out->cleanup;
} # XXX: add DESTROY and remove explicit calls
$bb_in->destroy;
$bb_out->destroy;Apache::OK; }
1;
-- __________________________________________________________________ Stas Bekman JAm_pH ------> Just Another mod_perl Hacker http://stason.org/ mod_perl Guide ---> http://perl.apache.org mailto:[EMAIL PROTECTED] http://use.perl.org http://apacheweek.com http://modperlbook.org http://apache.org http://ticketmaster.com
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]
