+ warn "<<<< $ip START\n$request\n";
+
+ return $sock->connected unless $headers;
+
+warn dump( $headers );
+
+ warn "missing $_ header\n" foreach grep { ! defined $headers->{ lc $_ } } ( 'SOAPAction' );
+
+ my $body;
+ if ( my $len = $headers->{'content-length'} ) {
+ read( $sock, $body, $len );
+ } elsif ( $headers->{'transfer-encoding'} =~ m/^chunked/i ) {
+ while ( my $len = <$sock> ) {
+warn "chunked ",dump($len);
+ $len =~ s/[\r\n]+$//;
+ $len = hex($len);
+ last if $len == 0;
+warn "reading $len bytes\n";
+ read( $sock, my $chunk, $len );
+warn "|$chunk| $len == ", length($chunk);
+ $body .= $chunk;
+ my $padding = <$sock>;
+warn "padding ",dump($padding);
+ }
+ } else {
+ warn "empty request\n";
+ }