Revise update-webkit-dependency to use LWP::UserAgent instead of LWP::Simple for...
authorbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jun 2015 22:08:46 +0000 (22:08 +0000)
committerbfulgham@apple.com <bfulgham@apple.com@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Fri, 12 Jun 2015 22:08:46 +0000 (22:08 +0000)
https://bugs.webkit.org/show_bug.cgi?id=145938

Reviewed by Alexey Proskuryakov.

* Scripts/update-webkit-dependency: Switch from LWP::Simple to
LWP::UserAgent to get access to more robust HTTPS support.

git-svn-id: https://svn.webkit.org/repository/webkit/trunk@185522 268f45cc-cd09-0410-ab3c-d52691b4dbfc

Tools/ChangeLog
Tools/Scripts/update-webkit-dependency

index 8b4f015..84ee72a 100644 (file)
@@ -1,3 +1,13 @@
+2015-06-12  Brent Fulgham  <bfulgham@apple.com>
+
+        Revise update-webkit-dependency to use LWP::UserAgent instead of LWP::Simple for better handling of https
+        https://bugs.webkit.org/show_bug.cgi?id=145938
+
+        Reviewed by Alexey Proskuryakov.
+
+        * Scripts/update-webkit-dependency: Switch from LWP::Simple to
+        LWP::UserAgent to get access to more robust HTTPS support.
+
 2015-06-12  Csaba Osztrogon√°c  <ossy@webkit.org>
 
         [GTK] Fix return type warning in WebViewTest.cpp
index 0fceda7..0c1e413 100755 (executable)
@@ -39,7 +39,9 @@ use File::Spec;
 use File::Temp ();
 use FindBin;
 use HTTP::Date qw(str2time time2str);
+use HTTP::Request;
 use LWP::Simple;
+use LWP::UserAgent;
 use POSIX;
 use lib $FindBin::Bin;
 use webkitdirs;
@@ -73,19 +75,24 @@ my $zipFile = "$file.zip";
 my $webkitLibrariesDir = $ENV{'WEBKIT_LIBRARIES'} || File::Spec->catdir($sourceDir, "WebKitLibraries", "win");
 my $tmpRelativeDir = File::Temp::tempdir("webkitlibsXXXXXXX", TMPDIR => 1, CLEANUP => 1);
 my $tmpAbsDir = File::Spec->rel2abs($tmpRelativeDir);
+my $ua = LWP::UserAgent->new();
 
 print "Checking Last-Modified date of $zipFile...\n";
 
-my ($content_type, $document_length, $modified_time, $expires, $server) = head($libsURL);
+my $response = $ua->get($libsURL);
 
-if (defined $modified_time) {
+die "Could not access $libsURL:\n" . $response->headers_as_string . "\n" unless ($response->is_success);
+
+my $content_type = $response->header('Content-Type');
+my $document_length = $response->header('Content-Length');
+my $modified_time = str2time($response->header('Last-Modified')); 
 
+if (defined $modified_time) {
+    print STDERR "Located a file of type $content_type, of size $document_length.\n";
     open NEW, ">", File::Spec->catfile($tmpAbsDir, "$file.headers");
     print NEW "Last-Modified: " . time2str($modified_time) . "\n";
     close NEW;
-
 } else {
-
     #Note: Neither GitHub nor DropBox emit the Last-Modified HTTP header, so fall back to a file
        #containing the necessary information if we do not receive the information in our initial query.
     my $headerURL = $libsURL;
@@ -95,6 +102,7 @@ if (defined $modified_time) {
 
     if (!is_success($result)) {
         print STDERR "Couldn't check Last-Modified date of new $zipFile.\n";
+        print STDERR "Response was: $result.\n";
         print STDERR "Please ensure that Perl can use LWP::Simple to connect to HTTPS urls, and that $libsURL is reachable.\n";
         print STDERR "You may have to run \$ cpan LWP::Protocol::https\n";