ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-HTTP/HTTP.pm
(Generate patch)

Comparing AnyEvent-HTTP/HTTP.pm (file contents):
Revision 1.104 by root, Thu Feb 24 15:09:03 2011 UTC vs.
Revision 1.108 by root, Thu Jun 30 09:12:39 2011 UTC

46use AnyEvent::Util (); 46use AnyEvent::Util ();
47use AnyEvent::Handle (); 47use AnyEvent::Handle ();
48 48
49use base Exporter::; 49use base Exporter::;
50 50
51our $VERSION = '2.1'; 51our $VERSION = '2.12';
52 52
53our @EXPORT = qw(http_get http_post http_head http_request); 53our @EXPORT = qw(http_get http_post http_head http_request);
54 54
55our $USERAGENT = "Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)"; 55our $USERAGENT = "Mozilla/5.0 (compatible; U; AnyEvent-HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)";
56our $MAX_RECURSE = 10; 56our $MAX_RECURSE = 10;
781 my $persistent = exists $arg{persistent} ? !!$arg{persistent} : $idempotent; 781 my $persistent = exists $arg{persistent} ? !!$arg{persistent} : $idempotent;
782 my $keepalive = exists $arg{keepalive} ? !!$arg{keepalive} : !$proxy; 782 my $keepalive = exists $arg{keepalive} ? !!$arg{keepalive} : !$proxy;
783 my $was_persistent; # true if this is actually a recycled connection 783 my $was_persistent; # true if this is actually a recycled connection
784 784
785 # the key to use in the keepalive cache 785 # the key to use in the keepalive cache
786 my $ka_key = "$uhost\x00$arg{sessionid}"; 786 my $ka_key = "$uscheme\x00$uhost\x00$uport\x00$arg{sessionid}";
787 787
788 $hdr{connection} = ($persistent ? $keepalive ? "keep-alive " : "" : "close ") . "Te"; #1.1 788 $hdr{connection} = ($persistent ? $keepalive ? "keep-alive " : "" : "close ") . "Te"; #1.1
789 $hdr{te} = "trailers" unless exists $hdr{te}; #1.1 789 $hdr{te} = "trailers" unless exists $hdr{te}; #1.1
790 790
791 my %state = (connect_guard => 1); 791 my %state = (connect_guard => 1);
962 my $body = ""; 962 my $body = "";
963 my $on_body = $arg{on_body} || sub { $body .= shift; 1 }; 963 my $on_body = $arg{on_body} || sub { $body .= shift; 1 };
964 964
965 $state{read_chunk} = sub { 965 $state{read_chunk} = sub {
966 $_[1] =~ /^([0-9a-fA-F]+)/ 966 $_[1] =~ /^([0-9a-fA-F]+)/
967 or $finish->(undef, $ae_error => "Garbled chunked transfer encoding"); 967 or return $finish->(undef, $ae_error => "Garbled chunked transfer encoding");
968 968
969 my $len = hex $1; 969 my $len = hex $1;
970 970
971 if ($len) { 971 if ($len) {
972 $cl += $len; 972 $cl += $len;
1138 if ($persistent && $KA_CACHE{$ka_key}) { 1138 if ($persistent && $KA_CACHE{$ka_key}) {
1139 $was_persistent = 1; 1139 $was_persistent = 1;
1140 1140
1141 $state{handle} = ka_fetch $ka_key; 1141 $state{handle} = ka_fetch $ka_key;
1142 $state{handle}->destroyed 1142 $state{handle}->destroyed
1143 and die "got a destructed habndle. pah\n";#d# 1143 and die "AnyEvent::HTTP: unexpectedly got a destructed handle (1), please report.";#d#
1144 $prepare_handle->(); 1144 $prepare_handle->();
1145 $state{handle}->destroyed 1145 $state{handle}->destroyed
1146 and die "got a destructed habndle. pa2\n";#d# 1146 and die "AnyEvent::HTTP: unexpectedly got a destructed handle (2), please report.";#d#
1147 $handle_actual_request->(); 1147 $handle_actual_request->();
1148 $state{handle}->destroyed
1149 and die "got a destructed habndle. pa3\n";#d#
1150 1148
1151 } else { 1149 } else {
1152 my $tcp_connect = $arg{tcp_connect} 1150 my $tcp_connect = $arg{tcp_connect}
1153 || do { require AnyEvent::Socket; \&AnyEvent::Socket::tcp_connect }; 1151 || do { require AnyEvent::Socket; \&AnyEvent::Socket::tcp_connect };
1154 1152
1386 1384
1387 warn stat $fh; 1385 warn stat $fh;
1388 warn -s _; 1386 warn -s _;
1389 if (stat $fh and -s _) { 1387 if (stat $fh and -s _) {
1390 $ofs = -s _; 1388 $ofs = -s _;
1391 warn "-s is ", $ofs;#d# 1389 warn "-s is ", $ofs;
1392 $hdr{"if-unmodified-since"} = AnyEvent::HTTP::format_date +(stat _)[9]; 1390 $hdr{"if-unmodified-since"} = AnyEvent::HTTP::format_date +(stat _)[9];
1393 $hdr{"range"} = "bytes=$ofs-"; 1391 $hdr{"range"} = "bytes=$ofs-";
1394 } 1392 }
1395 1393
1396 http_get $url, 1394 http_get $url,

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines