From 01fc3204f26c39c558416e2faea9ecc2a20c13ba Mon Sep 17 00:00:00 2001
From: Tatsuhiro Tsujikawa <tatsuhiro.t@gmail.com>
Date: Wed, 3 Feb 2010 13:49:22 +0000
Subject: [PATCH] 2010-02-03  Tatsuhiro Tsujikawa 
 <t-tujikawa@users.sourceforge.net>

	Remove fragment from redirected URI.
	* src/Request.cc
	* test/RequestTest.cc
---
 ChangeLog           | 6 ++++++
 src/Request.cc      | 2 +-
 test/RequestTest.cc | 4 ++--
 3 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 88b4ee44..998a6749 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-02-03  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
+
+	Remove fragment from redirected URI.
+	* src/Request.cc
+	* test/RequestTest.cc
+
 2010-02-03  Tatsuhiro Tsujikawa  <t-tujikawa@users.sourceforge.net>
 
 	Updated po templates.
diff --git a/src/Request.cc b/src/Request.cc
index 80a78714..0619220c 100644
--- a/src/Request.cc
+++ b/src/Request.cc
@@ -141,7 +141,7 @@ bool Request::redirectUrl(const std::string& url) {
   } else {
     redirectedUrl = url;
   }
-  return parseUrl(urlencode(redirectedUrl));
+  return parseUrl(urlencode(removeFragment(redirectedUrl)));
 }
 
 bool Request::parseUrl(const std::string& url) {
diff --git a/test/RequestTest.cc b/test/RequestTest.cc
index fecd33e4..26ea1f1a 100644
--- a/test/RequestTest.cc
+++ b/test/RequestTest.cc
@@ -363,8 +363,8 @@ void RequestTest::testRedirectUrl() {
                        req.getCurrentUrl());
   CPPUNIT_ASSERT_EQUAL((unsigned int)3, req.getRedirectCount());
 
-  // White space in path
-  CPPUNIT_ASSERT(req.redirectUrl("http://example.org/white space"));
+  // White space in path and fragment is appended.
+  CPPUNIT_ASSERT(req.redirectUrl("http://example.org/white space#aria2"));
   CPPUNIT_ASSERT_EQUAL(std::string("http://example.org/white%20space"),
                        req.getCurrentUrl());
 }