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.34 by root, Wed Oct 29 14:51:07 2008 UTC vs.
Revision 1.38 by root, Sat Mar 7 03:43:09 2009 UTC

48use AnyEvent::Socket (); 48use AnyEvent::Socket ();
49use AnyEvent::Handle (); 49use AnyEvent::Handle ();
50 50
51use base Exporter::; 51use base Exporter::;
52 52
53our $VERSION = '1.05'; 53our $VERSION = '1.11';
54 54
55our @EXPORT = qw(http_get http_post http_head http_request); 55our @EXPORT = qw(http_get http_post http_head http_request);
56 56
57our $USERAGENT = "Mozilla/5.0 (compatible; AnyEvent::HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)"; 57our $USERAGENT = "Mozilla/5.0 (compatible; AnyEvent::HTTP/$VERSION; +http://software.schmorp.de/pkg/AnyEvent)";
58our $MAX_RECURSE = 10; 58our $MAX_RECURSE = 10;
320 } 320 }
321 321
322 my ($rhost, $rport, $rscheme, $rpath); # request host, port, path 322 my ($rhost, $rport, $rscheme, $rpath); # request host, port, path
323 323
324 if ($proxy) { 324 if ($proxy) {
325 ($rhost, $rport, $rscheme, $rpath) = (@$proxy, $url); 325 ($rpath, $rhost, $rport, $rscheme) = ($url, @$proxy);
326 326
327 # don't support https requests over https-proxy transport, 327 # don't support https requests over https-proxy transport,
328 # can't be done with tls as spec'ed. 328 # can't be done with tls as spec'ed, unless you double-encrypt.
329 $rscheme = "http" if $uscheme eq "https" && $rscheme eq "https"; 329 $rscheme = "http" if $uscheme eq "https" && $rscheme eq "https";
330 } else { 330 } else {
331 ($rhost, $rport, $rscheme, $rpath) = ($uhost, $uport, $uscheme, $upath); 331 ($rhost, $rport, $rscheme, $rpath) = ($uhost, $uport, $uscheme, $upath);
332 } 332 }
333 333
426 426
427 substr $_, 0, 1, "" 427 substr $_, 0, 1, ""
428 for values %hdr; 428 for values %hdr;
429 429
430 my $finish = sub { 430 my $finish = sub {
431 # TODO: use destroy method, when/if available
432 #$state{handle}->destroy; 431 $state{handle}->destroy;
433 $state{handle}->on_eof (undef);
434 $state{handle}->on_error (undef);
435 %state = (); 432 %state = ();
436 433
437 # set-cookie processing 434 # set-cookie processing
438 if ($arg{cookie_jar}) { 435 if ($arg{cookie_jar}) {
439 for ($hdr{"set-cookie"}) { 436 for ($hdr{"set-cookie"}) {
528 }); 525 });
529 } else { 526 } else {
530 # too bad, need to read until we get an error or EOF, 527 # too bad, need to read until we get an error or EOF,
531 # no way to detect winged data. 528 # no way to detect winged data.
532 $_[0]->on_error (sub { 529 $_[0]->on_error (sub {
530 # delete ought to be more efficient, as we would have to make
531 # a copy otherwise as $_[0] gets destroyed.
533 $finish->($_[0]{rbuf}, \%hdr); 532 $finish->(delete $_[0]{rbuf}, \%hdr);
534 }); 533 });
535 $_[0]->on_eof (undef); 534 $_[0]->on_eof (undef);
536 $_[0]->on_read (sub { }); 535 $_[0]->on_read (sub { });
537 } 536 }
538 } 537 }
642=head1 AUTHOR 641=head1 AUTHOR
643 642
644 Marc Lehmann <schmorp@schmorp.de> 643 Marc Lehmann <schmorp@schmorp.de>
645 http://home.schmorp.de/ 644 http://home.schmorp.de/
646 645
646With many thanks to Дмитрий Шалашов, who provided countless
647testcases and bugreports.
648
647=cut 649=cut
648 650
6491 6511
650 652

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines