<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">From 92e3e2cfef2a67bace93890d10f104ec9db4bf18 Mon Sep 17 00:00:00 2001
From: Slaven Rezic &lt;srezic@iconmobile.com&gt;
Date: Wed, 25 Mar 2009 18:28:06 +0100
Subject: [PATCH] send_request has to run the response_done handler for mirror()
 otherwise the mirrored file could remain truncated
 (added also a test script which must be run manually)

---
 MANIFEST                  |    1 +
 lib/LWPx/ParanoidAgent.pm |    1 +
 t/30-mirror.t             |   27 +++++++++++++++++++++++++++
 3 files changed, 29 insertions(+), 0 deletions(-)
 create mode 100755 t/30-mirror.t

diff --git a/MANIFEST b/MANIFEST
index d6a2083..d2fecb6 100644
--- a/MANIFEST
+++ b/MANIFEST
@@ -5,4 +5,5 @@ lib/LWPx/Protocol/http_paranoid.pm
 lib/LWPx/Protocol/https_paranoid.pm
 lib/LWPx/ParanoidAgent.pm
 t/00-all.t
+t/30-mirror.t
 META.yml                                 Module meta-data (added by MakeMaker)
diff --git a/lib/LWPx/ParanoidAgent.pm b/lib/LWPx/ParanoidAgent.pm
index 0db4380..ae77419 100644
--- a/lib/LWPx/ParanoidAgent.pm
+++ b/lib/LWPx/ParanoidAgent.pm
@@ -322,6 +322,7 @@ EOT
     $response-&gt;request($request);  # record request for reference
     $cookie_jar-&gt;extract_cookies($response) if $cookie_jar;
     $response-&gt;header("Client-Date" =&gt; HTTP::Date::time2str(time));
+    $self-&gt;run_handlers("response_done", $response);
     return $response;
 }
 
diff --git a/t/30-mirror.t b/t/30-mirror.t
new file mode 100755
index 0000000..9f0a3ea
--- /dev/null
+++ b/t/30-mirror.t
@@ -0,0 +1,27 @@
+# Testing the "Transfer truncated: only ... out of .. bytes received"
+# case.
+
+use strict;
+use Test::More;
+
+use File::Temp qw(tempfile);
+use Getopt::Long qw(GetOptions);
+use LWPx::ParanoidAgent;
+
+my $url;
+GetOptions("url=s" =&gt; \$url)
+    or die "usage: $0 [-url url]";
+
+if (!$url) {
+    plan skip_all =&gt; 'Mirror tests needs -url option';
+    exit;
+}
+
+plan tests =&gt; 1;
+
+my(undef, $tempfile) = tempfile(UNLINK =&gt; 1);
+unlink $tempfile; # we only need the filename
+my $ua = LWPx::ParanoidAgent-&gt;new;
+my $resp = $ua-&gt;mirror($url, $tempfile);
+ok($resp-&gt;is_success)
+    or diag($resp-&gt;as_string);
-- 
1.6.2

</pre></body></html>