App-HTTP_Proxy_IMP
view release on metacpan or search on metacpan
lib/App/HTTP_Proxy_IMP/IMP.pm view on Meta::CPAN
# remove header
substr($buf,0,$hdr_len,'');
$gzip_csum = 8; # 8 byte Adler CRC at end
$wb = -MAX_WBITS(); # see Compress::Raw::Zlib
} else {
# deflate
# according to RFC it should be zlib, but due to the encoding name
# often real deflate is used instead
# check magic bytes to decide
# lets see if it looks like a zlib header
# check for CM=8, CMID<=7 in first byte and valid FCHECK in
# seconds byte
return $more if length($buf)<2;
my $magic = unpack('C',substr($buf,0,1));
if (
( $magic & 0b1111 ) == 8 # CM = 8
and $magic >> 4 <= 7 # CMID <= 7
and unpack('n',substr($buf,0,2)) % 31 == 0 # valid FCHECK
lib/App/HTTP_Proxy_IMP/Request.pm view on Meta::CPAN
while (@$spool && ! $conn->{spool} ) {
my ($sub,@arg) = @{ $spool->[0] };
$DEBUG && debug("handle spooled event $sub");
$sub->(@arg);
}
push @{ $conn->{spool}}, @$spool if @$spool; # put back
}
############################################################################
# process request body data
# if IMP, we might need to wait for a callback to decide what to do with
# the data, otherwise the data are further send directly
# if IMP might modify the data, we need to defer sending the header to get
# the final content-length and fixup the header accordingly
############################################################################
sub in_request_body {
my ($self,$data,$eof) = @_;
my $conn = $self->{conn} or return;
my $relay = $conn->{relay} or return;
if ( ! $self->{connected} ) {
# not connected yet
lib/App/HTTP_Proxy_IMP/Request.pm view on Meta::CPAN
} else {
$relay->forward(0,1,$data) if $self->{connected} == CONN_HOST;
}
}
$relay->account('upgrade') if $eof;
}
############################################################################
# chunks and junk gets ignored
# - we decide ourself, when we will forward data chunked and do the
# chunking ourself
# - junk data will not be forwarded
############################################################################
sub in_chunk_header {}
sub in_chunk_trailer {}
sub in_junk {}
1;
( run in 1.804 second using v1.01-cache-2.11-cpan-de7293f3b23 )