mirror of https://github.com/aria2/aria2
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
Fixed the bug that filename is percent encoded where it must be percent decoded in sendMdtm(). * src/FtpConnection.cc * test/FtpConnectionTest.ccpull/1/head
parent
b0f180c99c
commit
4785b7190c
|
@ -1,3 +1,10 @@
|
||||||
|
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
|
Fixed the bug that filename is percent encoded where it must be
|
||||||
|
percent decoded in sendMdtm().
|
||||||
|
* src/FtpConnection.cc
|
||||||
|
* test/FtpConnectionTest.cc
|
||||||
|
|
||||||
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
2010-03-07 Tatsuhiro Tsujikawa <t-tujikawa@users.sourceforge.net>
|
||||||
|
|
||||||
url -> uri in Request class.
|
url -> uri in Request class.
|
||||||
|
|
|
@ -152,7 +152,7 @@ bool FtpConnection::sendMdtm()
|
||||||
{
|
{
|
||||||
if(_socketBuffer.sendBufferIsEmpty()) {
|
if(_socketBuffer.sendBufferIsEmpty()) {
|
||||||
std::string request = "MDTM ";
|
std::string request = "MDTM ";
|
||||||
request += util::urlencode(req->getFile());
|
request += util::urldecode(req->getFile());
|
||||||
request += "\r\n";
|
request += "\r\n";
|
||||||
logger->info(MSG_SENDING_REQUEST, cuid, request.c_str());
|
logger->info(MSG_SENDING_REQUEST, cuid, request.c_str());
|
||||||
_socketBuffer.pushStr(request);
|
_socketBuffer.pushStr(request);
|
||||||
|
|
|
@ -30,7 +30,9 @@ class FtpConnectionTest:public CppUnit::TestFixture {
|
||||||
CPPUNIT_TEST(testReceivePwdResponse_badStatus);
|
CPPUNIT_TEST(testReceivePwdResponse_badStatus);
|
||||||
CPPUNIT_TEST(testSendCwd);
|
CPPUNIT_TEST(testSendCwd);
|
||||||
CPPUNIT_TEST(testSendCwd_baseWorkingDir);
|
CPPUNIT_TEST(testSendCwd_baseWorkingDir);
|
||||||
|
CPPUNIT_TEST(testSendSize);
|
||||||
CPPUNIT_TEST(testReceiveSizeResponse);
|
CPPUNIT_TEST(testReceiveSizeResponse);
|
||||||
|
CPPUNIT_TEST(testSendRetr);
|
||||||
CPPUNIT_TEST_SUITE_END();
|
CPPUNIT_TEST_SUITE_END();
|
||||||
private:
|
private:
|
||||||
SharedHandle<SocketCore> _serverSocket;
|
SharedHandle<SocketCore> _serverSocket;
|
||||||
|
@ -54,7 +56,7 @@ public:
|
||||||
_listenPort = addrinfo.second;
|
_listenPort = addrinfo.second;
|
||||||
|
|
||||||
SharedHandle<Request> req(new Request());
|
SharedHandle<Request> req(new Request());
|
||||||
req->setUri("ftp://localhost/dir/file.img");
|
req->setUri("ftp://localhost/dir%20sp/hello%20world.img");
|
||||||
|
|
||||||
_clientSocket.reset(new SocketCore());
|
_clientSocket.reset(new SocketCore());
|
||||||
_clientSocket->establishConnection("localhost", _listenPort);
|
_clientSocket->establishConnection("localhost", _listenPort);
|
||||||
|
@ -81,7 +83,9 @@ public:
|
||||||
void testReceivePwdResponse_badStatus();
|
void testReceivePwdResponse_badStatus();
|
||||||
void testSendCwd();
|
void testSendCwd();
|
||||||
void testSendCwd_baseWorkingDir();
|
void testSendCwd_baseWorkingDir();
|
||||||
|
void testSendSize();
|
||||||
void testReceiveSizeResponse();
|
void testReceiveSizeResponse();
|
||||||
|
void testSendRetr();
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -141,9 +145,9 @@ void FtpConnectionTest::testSendMdtm()
|
||||||
char data[32];
|
char data[32];
|
||||||
size_t len = sizeof(data);
|
size_t len = sizeof(data);
|
||||||
_serverSocket->readData(data, len);
|
_serverSocket->readData(data, len);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)15, len);
|
|
||||||
data[len] = '\0';
|
data[len] = '\0';
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("MDTM file.img\r\n"), std::string(data));
|
CPPUNIT_ASSERT_EQUAL(std::string("MDTM hello world.img\r\n"),
|
||||||
|
std::string(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FtpConnectionTest::testReceiveMdtmResponse()
|
void FtpConnectionTest::testReceiveMdtmResponse()
|
||||||
|
@ -263,9 +267,8 @@ void FtpConnectionTest::testSendCwd()
|
||||||
char data[32];
|
char data[32];
|
||||||
size_t len = sizeof(data);
|
size_t len = sizeof(data);
|
||||||
_serverSocket->readData(data, len);
|
_serverSocket->readData(data, len);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)10, len);
|
|
||||||
data[len] = '\0';
|
data[len] = '\0';
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("CWD /dir\r\n"), std::string(data));
|
CPPUNIT_ASSERT_EQUAL(std::string("CWD /dir sp\r\n"), std::string(data));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FtpConnectionTest::testSendCwd_baseWorkingDir()
|
void FtpConnectionTest::testSendCwd_baseWorkingDir()
|
||||||
|
@ -275,9 +278,18 @@ void FtpConnectionTest::testSendCwd_baseWorkingDir()
|
||||||
char data[32];
|
char data[32];
|
||||||
size_t len = sizeof(data);
|
size_t len = sizeof(data);
|
||||||
_serverSocket->readData(data, len);
|
_serverSocket->readData(data, len);
|
||||||
CPPUNIT_ASSERT_EQUAL((size_t)15, len);
|
|
||||||
data[len] = '\0';
|
data[len] = '\0';
|
||||||
CPPUNIT_ASSERT_EQUAL(std::string("CWD /base/dir\r\n"), std::string(data));
|
CPPUNIT_ASSERT_EQUAL(std::string("CWD /base/dir sp\r\n"), std::string(data));
|
||||||
|
}
|
||||||
|
|
||||||
|
void FtpConnectionTest::testSendSize()
|
||||||
|
{
|
||||||
|
_ftp->sendSize();
|
||||||
|
char data[32];
|
||||||
|
size_t len = sizeof(data);
|
||||||
|
_serverSocket->readData(data, len);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("SIZE hello world.img\r\n"),
|
||||||
|
std::string(&data[0], &data[len]));
|
||||||
}
|
}
|
||||||
|
|
||||||
void FtpConnectionTest::testReceiveSizeResponse()
|
void FtpConnectionTest::testReceiveSizeResponse()
|
||||||
|
@ -289,4 +301,14 @@ void FtpConnectionTest::testReceiveSizeResponse()
|
||||||
CPPUNIT_ASSERT_EQUAL((uint64_t)4294967296LL, size);
|
CPPUNIT_ASSERT_EQUAL((uint64_t)4294967296LL, size);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void FtpConnectionTest::testSendRetr()
|
||||||
|
{
|
||||||
|
_ftp->sendRetr();
|
||||||
|
char data[32];
|
||||||
|
size_t len = sizeof(data);
|
||||||
|
_serverSocket->readData(data, len);
|
||||||
|
CPPUNIT_ASSERT_EQUAL(std::string("RETR hello world.img\r\n"),
|
||||||
|
std::string(&data[0], &data[len]));
|
||||||
|
}
|
||||||
|
|
||||||
} // namespace aria2
|
} // namespace aria2
|
||||||
|
|
Loading…
Reference in New Issue