diff --git a/ChangeLog b/ChangeLog index 0083c2a63..3097bbf1d 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,8 @@ +2010-06-27 Tatsuhiro Tsujikawa + + Don't set previousUri_ to "" on redirect. + * src/Request.cc: redirectUri() + 2010-06-27 Tatsuhiro Tsujikawa Return given hostname if hostname is numeric host. diff --git a/src/Request.cc b/src/Request.cc index 761ec1b93..b52c5e623 100644 --- a/src/Request.cc +++ b/src/Request.cc @@ -125,7 +125,6 @@ void Request::setReferer(const std::string& uri) } bool Request::redirectUri(const std::string& uri) { - previousUri_ = A2STR::NIL; supportsPersistentConnection_ = true; ++redirectCount_; std::string redirectedUri; diff --git a/test/RequestTest.cc b/test/RequestTest.cc index 7f74ff8ac..9e96af608 100644 --- a/test/RequestTest.cc +++ b/test/RequestTest.cc @@ -339,7 +339,7 @@ void RequestTest::testRedirectUri() { // currentUri must be updated CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.co.jp/"), req.getCurrentUri()); - // previousUri must be "" when redirection + // previousUri is "" because no referer is set. CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPreviousUri()); CPPUNIT_ASSERT_EQUAL(std::string("http"), req.getProtocol()); CPPUNIT_ASSERT_EQUAL(std::string("aria.rednoah.co.jp"), req.getHost()); @@ -375,18 +375,22 @@ void RequestTest::testRedirectUri2() { CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPreviousUri()); req.setReferer("http://aria.rednoah.com/"); // previousUri is updated when referer is specified - CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), req.getPreviousUri()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getPreviousUri()); req.redirectUri("http://aria.rednoah.com/403.html"); - // previousUri must be "" when redirection - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPreviousUri()); + // previousUri must not be changed in redirection + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getPreviousUri()); // referer is unchagned - CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), req.getReferer()); + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getReferer()); req.redirectUri("http://aria.rednoah.com/error.html"); - // previousUri must be "" when redirection - CPPUNIT_ASSERT_EQUAL(std::string(""), req.getPreviousUri()); + // previousUri must not be changed in redirection + CPPUNIT_ASSERT_EQUAL(std::string("http://aria.rednoah.com/"), + req.getPreviousUri()); } void RequestTest::testResetUri() {