diff options
23 files changed, 6 insertions, 637 deletions
diff --git a/net/data/ftp/dir-listing-hprc-1 b/net/data/ftp/dir-listing-hprc-1 deleted file mode 100644 index ee3504f..0000000 --- a/net/data/ftp/dir-listing-hprc-1 +++ /dev/null @@ -1,2 +0,0 @@ - . - .. diff --git a/net/data/ftp/dir-listing-hprc-1.expected b/net/data/ftp/dir-listing-hprc-1.expected deleted file mode 100644 index 6259526..0000000 --- a/net/data/ftp/dir-listing-hprc-1.expected +++ /dev/null @@ -1,17 +0,0 @@ -- -. -0 -1994 -11 -15 -12 -45 - -- -.. -0 -1994 -11 -15 -12 -45 diff --git a/net/data/ftp/dir-listing-hprc-2 b/net/data/ftp/dir-listing-hprc-2 deleted file mode 100644 index 31a8688..0000000 --- a/net/data/ftp/dir-listing-hprc-2 +++ /dev/null @@ -1,4 +0,0 @@ - . - .. - .welcome - readme diff --git a/net/data/ftp/dir-listing-hprc-2.expected b/net/data/ftp/dir-listing-hprc-2.expected deleted file mode 100644 index e597b76..0000000 --- a/net/data/ftp/dir-listing-hprc-2.expected +++ /dev/null @@ -1,35 +0,0 @@ -- -. -0 -1994 -11 -15 -12 -45 - -- -.. -0 -1994 -11 -15 -12 -45 - -- -.welcome -0 -1994 -11 -15 -12 -45 - -- -readme -0 -1994 -11 -15 -12 -45 diff --git a/net/data/ftp/dir-listing-hprc-3 b/net/data/ftp/dir-listing-hprc-3 deleted file mode 100644 index 0e2f2d0..0000000 --- a/net/data/ftp/dir-listing-hprc-3 +++ /dev/null @@ -1,3 +0,0 @@ - . - .. - Multi Word File Name.txt diff --git a/net/data/ftp/dir-listing-hprc-3.expected b/net/data/ftp/dir-listing-hprc-3.expected deleted file mode 100644 index a71cbd2..0000000 --- a/net/data/ftp/dir-listing-hprc-3.expected +++ /dev/null @@ -1,26 +0,0 @@ -- -. -0 -1994 -11 -15 -12 -45 - -- -.. -0 -1994 -11 -15 -12 -45 - -- -Multi Word File Name.txt -0 -1994 -11 -15 -12 -45 diff --git a/net/data/ftp/dir-listing-mlsd-1 b/net/data/ftp/dir-listing-mlsd-1 deleted file mode 100644 index 9463845..0000000 --- a/net/data/ftp/dir-listing-mlsd-1 +++ /dev/null @@ -1,5 +0,0 @@ -type=dir;sizd=512;modify=20010414155043;UNIX.mode=0555;unique=6ag5b4e3ff; bin -type=dir;sizd=512;modify=20010414155237;UNIX.mode=0555;unique=6ag5b4e400; etc -type=dir;sizd=512;modify=20010705213550;UNIX.mode=0711;unique=6ag5b4e401; hidden -type=dir;sizd=512;modify=20050422001005;UNIX.mode=0755;unique=100ff03g6164000; j -type=dir;sizd=512;modify=20031021200128;UNIX.mode=0755;unique=6ag5b4e403; pub diff --git a/net/data/ftp/dir-listing-mlsd-1.expected b/net/data/ftp/dir-listing-mlsd-1.expected deleted file mode 100644 index 7720451..0000000 --- a/net/data/ftp/dir-listing-mlsd-1.expected +++ /dev/null @@ -1,44 +0,0 @@ -d -bin --1 -2001 -4 -14 -15 -50 - -d -etc --1 -2001 -4 -14 -15 -52 - -d -hidden --1 -2001 -7 -5 -21 -35 - -d -j --1 -2005 -4 -22 -0 -10 - -d -pub --1 -2003 -10 -21 -20 -1 diff --git a/net/data/ftp/dir-listing-mlsd-2 b/net/data/ftp/dir-listing-mlsd-2 deleted file mode 100644 index 939638a..0000000 --- a/net/data/ftp/dir-listing-mlsd-2 +++ /dev/null @@ -1 +0,0 @@ -type=file;size=839;modify=19980908010757;UNIX.mode=0644;unique=6ag5b4e47d; ftpmotd diff --git a/net/data/ftp/dir-listing-mlsd-2.expected b/net/data/ftp/dir-listing-mlsd-2.expected deleted file mode 100644 index 33659ea..0000000 --- a/net/data/ftp/dir-listing-mlsd-2.expected +++ /dev/null @@ -1,8 +0,0 @@ -- -ftpmotd -839 -1998 -9 -8 -1 -7 diff --git a/net/ftp/ftp_directory_listing_buffer.cc b/net/ftp/ftp_directory_listing_buffer.cc index f6e8748..58533b8 100644 --- a/net/ftp/ftp_directory_listing_buffer.cc +++ b/net/ftp/ftp_directory_listing_buffer.cc @@ -9,9 +9,7 @@ #include "base/stl_util-inl.h" #include "base/string_util.h" #include "net/base/net_errors.h" -#include "net/ftp/ftp_directory_listing_parser_hprc.h" #include "net/ftp/ftp_directory_listing_parser_ls.h" -#include "net/ftp/ftp_directory_listing_parser_mlsd.h" #include "net/ftp/ftp_directory_listing_parser_netware.h" #include "net/ftp/ftp_directory_listing_parser_vms.h" #include "net/ftp/ftp_directory_listing_parser_windows.h" @@ -21,9 +19,7 @@ namespace net { FtpDirectoryListingBuffer::FtpDirectoryListingBuffer( const base::Time& current_time) : current_parser_(NULL) { - parsers_.insert(new FtpDirectoryListingParserHprc(current_time)); parsers_.insert(new FtpDirectoryListingParserLs(current_time)); - parsers_.insert(new FtpDirectoryListingParserMlsd()); parsers_.insert(new FtpDirectoryListingParserNetware(current_time)); parsers_.insert(new FtpDirectoryListingParserVms()); parsers_.insert(new FtpDirectoryListingParserWindows()); diff --git a/net/ftp/ftp_directory_listing_buffer_unittest.cc b/net/ftp/ftp_directory_listing_buffer_unittest.cc index ceddfc4..cb120a6 100644 --- a/net/ftp/ftp_directory_listing_buffer_unittest.cc +++ b/net/ftp/ftp_directory_listing_buffer_unittest.cc @@ -19,9 +19,6 @@ namespace { TEST(FtpDirectoryListingBufferTest, Parse) { const char* test_files[] = { - "dir-listing-hprc-1", - "dir-listing-hprc-2", - "dir-listing-hprc-3", "dir-listing-ls-1", "dir-listing-ls-1-utf8", "dir-listing-ls-2", @@ -45,8 +42,6 @@ TEST(FtpDirectoryListingBufferTest, Parse) { "dir-listing-ls-20", // TODO(phajdan.jr): should use windows-1251 encoding. "dir-listing-ls-21", // TODO(phajdan.jr): should use windows-1251 encoding. "dir-listing-ls-22", // TODO(phajdan.jr): should use windows-1251 encoding. - "dir-listing-mlsd-1", - "dir-listing-mlsd-2", "dir-listing-netware-1", "dir-listing-netware-2", "dir-listing-vms-1", diff --git a/net/ftp/ftp_directory_listing_parser_hprc.cc b/net/ftp/ftp_directory_listing_parser_hprc.cc deleted file mode 100644 index 621aba1..0000000 --- a/net/ftp/ftp_directory_listing_parser_hprc.cc +++ /dev/null @@ -1,60 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/ftp/ftp_directory_listing_parser_hprc.h" - -#include "base/logging.h" -#include "base/time.h" - -namespace net { - -FtpDirectoryListingParserHprc::FtpDirectoryListingParserHprc( - const base::Time& current_time) - : current_time_(current_time) { -} - -FtpDirectoryListingParserHprc::~FtpDirectoryListingParserHprc() {} - -FtpServerType FtpDirectoryListingParserHprc::GetServerType() const { - return SERVER_HPRC; -} - -bool FtpDirectoryListingParserHprc::ConsumeLine(const string16& line) { - if (line.empty()) - return false; - - // All lines begin with a space. - if (line[0] != ' ') - return false; - - FtpDirectoryListingEntry entry; - entry.name = line.substr(1); - - // We don't know anything beyond the file name, so just pick some arbitrary - // values. - // TODO(phajdan.jr): consider adding an UNKNOWN entry type. - entry.type = FtpDirectoryListingEntry::FILE; - entry.size = 0; - entry.last_modified = current_time_; - - entries_.push(entry); - return true; -} - -bool FtpDirectoryListingParserHprc::OnEndOfInput() { - return true; -} - -bool FtpDirectoryListingParserHprc::EntryAvailable() const { - return !entries_.empty(); -} - -FtpDirectoryListingEntry FtpDirectoryListingParserHprc::PopEntry() { - DCHECK(EntryAvailable()); - FtpDirectoryListingEntry entry = entries_.front(); - entries_.pop(); - return entry; -} - -} // namespace net diff --git a/net/ftp/ftp_directory_listing_parser_hprc.h b/net/ftp/ftp_directory_listing_parser_hprc.h deleted file mode 100644 index d153810..0000000 --- a/net/ftp/ftp_directory_listing_parser_hprc.h +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef NET_FTP_FTP_DIRECTORY_LISTING_PARSER_HPRC_H_ -#define NET_FTP_FTP_DIRECTORY_LISTING_PARSER_HPRC_H_ -#pragma once - -#include <queue> - -#include "base/basictypes.h" -#include "base/time.h" -#include "net/ftp/ftp_directory_listing_parser.h" - -namespace net { - -// Parser for directory listings served by HPRC, -// see http://hprc.external.hp.com/ and http://crbug.com/56547. -class FtpDirectoryListingParserHprc : public FtpDirectoryListingParser { - public: - // Constructor. When we need to provide the last modification time - // that we don't know, |current_time| will be used. This allows passing - // a specific date during testing. - explicit FtpDirectoryListingParserHprc(const base::Time& current_time); - virtual ~FtpDirectoryListingParserHprc(); - - // FtpDirectoryListingParser methods: - virtual FtpServerType GetServerType() const; - virtual bool ConsumeLine(const string16& line); - virtual bool OnEndOfInput(); - virtual bool EntryAvailable() const; - virtual FtpDirectoryListingEntry PopEntry(); - - private: - // Store the current time. We use it in place of last modification time - // that is unknown (the server doesn't send it). - const base::Time current_time_; - - std::queue<FtpDirectoryListingEntry> entries_; - - DISALLOW_COPY_AND_ASSIGN(FtpDirectoryListingParserHprc); -}; - -} // namespace net - -#endif // NET_FTP_FTP_DIRECTORY_LISTING_PARSER_HPRC_H_ diff --git a/net/ftp/ftp_directory_listing_parser_hprc_unittest.cc b/net/ftp/ftp_directory_listing_parser_hprc_unittest.cc deleted file mode 100644 index bd057e9..0000000 --- a/net/ftp/ftp_directory_listing_parser_hprc_unittest.cc +++ /dev/null @@ -1,46 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/ftp/ftp_directory_listing_parser_unittest.h" - -#include "base/format_macros.h" -#include "base/string_util.h" -#include "base/stringprintf.h" -#include "net/ftp/ftp_directory_listing_parser_hprc.h" - -namespace { - -typedef net::FtpDirectoryListingParserTest FtpDirectoryListingParserHprcTest; - -TEST_F(FtpDirectoryListingParserHprcTest, Good) { - const struct SingleLineTestData good_cases[] = { - { " .welcome", - net::FtpDirectoryListingEntry::FILE, ".welcome", 0, - 1994, 11, 15, 12, 45 }, - }; - for (size_t i = 0; i < arraysize(good_cases); i++) { - SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, - good_cases[i].input)); - - net::FtpDirectoryListingParserHprc parser(GetMockCurrentTime()); - RunSingleLineTestCase(&parser, good_cases[i]); - } -} - -TEST_F(FtpDirectoryListingParserHprcTest, Bad) { - const char* bad_cases[] = { - "", - "test", - "-rw-r--r-- 1 ftp ftp 528 Nov 01 2007 README", - "d [RWCEAFMS] ftpadmin 512 Jan 29 2004 pub", - "TEST.DIR;1 1 4-MAR-1999 22:14:34 [UCX$NOBO,ANONYMOUS] (RWE,RWE,RWE,RWE)", - "type=dir;modify=20010414155237;UNIX.mode=0555;unique=6ag5b4e400; etc", - }; - for (size_t i = 0; i < arraysize(bad_cases); i++) { - net::FtpDirectoryListingParserHprc parser(GetMockCurrentTime()); - EXPECT_FALSE(parser.ConsumeLine(UTF8ToUTF16(bad_cases[i]))) << bad_cases[i]; - } -} - -} // namespace diff --git a/net/ftp/ftp_directory_listing_parser_mlsd.cc b/net/ftp/ftp_directory_listing_parser_mlsd.cc deleted file mode 100644 index f2558415..0000000 --- a/net/ftp/ftp_directory_listing_parser_mlsd.cc +++ /dev/null @@ -1,146 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/ftp/ftp_directory_listing_parser_mlsd.h" - -#include <map> -#include <vector> - -#include "base/stl_util-inl.h" -#include "base/string_number_conversions.h" -#include "base/string_split.h" -#include "base/string_util.h" -#include "base/utf_string_conversions.h" - -// You can read the specification of the MLSD format at -// http://tools.ietf.org/html/rfc3659#page-23. - -namespace { - -// The MLSD date listing is specified at -// http://tools.ietf.org/html/rfc3659#page-6. -bool MlsdDateListingToTime(const string16& text, base::Time* time) { - base::Time::Exploded time_exploded = { 0 }; - - // We will only test 12 characters, but RFC-3659 requires 14 (we ignore the - // last two digits, which contain the number of seconds). - if (text.length() < 14) - return false; - - if (!base::StringToInt(text.begin(), text.begin() + 4, &time_exploded.year)) - return false; - if (!base::StringToInt(text.begin() + 4, - text.begin() + 6, - &time_exploded.month)) - return false; - if (!base::StringToInt(text.begin() + 6, - text.begin() + 8, - &time_exploded.day_of_month)) - return false; - if (!base::StringToInt(text.begin() + 8, - text.begin() + 10, - &time_exploded.hour)) - return false; - if (!base::StringToInt(text.begin() + 10, - text.begin() + 12, - &time_exploded.minute)) - return false; - - // We don't know the time zone of the server, so just use local time. - *time = base::Time::FromLocalExploded(time_exploded); - return true; -} - -} // namespace - -namespace net { - -FtpDirectoryListingParserMlsd::FtpDirectoryListingParserMlsd() {} - -FtpDirectoryListingParserMlsd::~FtpDirectoryListingParserMlsd() {} - -FtpServerType FtpDirectoryListingParserMlsd::GetServerType() const { - return SERVER_MLSD; -} - -bool FtpDirectoryListingParserMlsd::ConsumeLine(const string16& line) { - // The first space indicates where the filename begins. - string16::size_type first_space_pos = line.find(' '); - if (first_space_pos == string16::npos || first_space_pos < 1) - return false; - - string16 facts_string = line.substr(0, first_space_pos - 1); - string16 filename = line.substr(first_space_pos + 1); - std::vector<string16> facts_split; - base::SplitString(facts_string, ';', &facts_split); - - const char* keys[] = { - "modify", - "size", - "type", - }; - - std::map<std::string, string16> facts; - for (std::vector<string16>::const_iterator i = facts_split.begin(); - i != facts_split.end(); ++i) { - string16::size_type equal_sign_pos = i->find('='); - if (equal_sign_pos == string16::npos) - return false; - string16 key = i->substr(0, equal_sign_pos); - string16 value = i->substr(equal_sign_pos + 1); - - // If we're interested in a key, record its value. Note that we don't detect - // a case when the server is sending duplicate keys. We're not validating - // the input, just parsing it. - for (size_t j = 0; j < arraysize(keys); j++) - if (LowerCaseEqualsASCII(key, keys[j])) - facts[keys[j]] = value; - } - if (!ContainsKey(facts, "type")) - return false; - - FtpDirectoryListingEntry entry; - entry.name = filename; - - if (LowerCaseEqualsASCII(facts["type"], "dir")) { - entry.type = FtpDirectoryListingEntry::DIRECTORY; - entry.size = -1; - } else if (LowerCaseEqualsASCII(facts["type"], "file")) { - entry.type = FtpDirectoryListingEntry::FILE; - if (!ContainsKey(facts, "size")) - return false; - if (!base::StringToInt64(facts["size"], &entry.size)) - return false; - } else { - // Ignore other types of entries. They are either not interesting for us - // (cdir, pdir), or not regular files (OS-specific types). There is no - // specific type for symlink. Symlinks get a type of their target. - return true; - } - - if (!ContainsKey(facts, "modify")) - return false; - if (!MlsdDateListingToTime(facts["modify"], &entry.last_modified)) - return false; - - entries_.push(entry); - return true; -} - -bool FtpDirectoryListingParserMlsd::OnEndOfInput() { - return true; -} - -bool FtpDirectoryListingParserMlsd::EntryAvailable() const { - return !entries_.empty(); -} - -FtpDirectoryListingEntry FtpDirectoryListingParserMlsd::PopEntry() { - DCHECK(EntryAvailable()); - FtpDirectoryListingEntry entry = entries_.front(); - entries_.pop(); - return entry; -} - -} // namespace net diff --git a/net/ftp/ftp_directory_listing_parser_mlsd.h b/net/ftp/ftp_directory_listing_parser_mlsd.h deleted file mode 100644 index 5c11fa0..0000000 --- a/net/ftp/ftp_directory_listing_parser_mlsd.h +++ /dev/null @@ -1,37 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#ifndef NET_FTP_FTP_DIRECTORY_LISTING_PARSER_MLSD_H_ -#define NET_FTP_FTP_DIRECTORY_LISTING_PARSER_MLSD_H_ -#pragma once - -#include <queue> - -#include "net/ftp/ftp_directory_listing_parser.h" - -namespace net { - -// Parser for MLSD directory listing (RFC-3659). For more info see -// http://tools.ietf.org/html/rfc3659#page-23. -class FtpDirectoryListingParserMlsd : public FtpDirectoryListingParser { - public: - FtpDirectoryListingParserMlsd(); - virtual ~FtpDirectoryListingParserMlsd(); - - // FtpDirectoryListingParser methods: - virtual FtpServerType GetServerType() const; - virtual bool ConsumeLine(const string16& line); - virtual bool OnEndOfInput(); - virtual bool EntryAvailable() const; - virtual FtpDirectoryListingEntry PopEntry(); - - private: - std::queue<FtpDirectoryListingEntry> entries_; - - DISALLOW_COPY_AND_ASSIGN(FtpDirectoryListingParserMlsd); -}; - -} // namespace net - -#endif // NET_FTP_FTP_DIRECTORY_LISTING_PARSER_MLSD_H_ diff --git a/net/ftp/ftp_directory_listing_parser_mlsd_unittest.cc b/net/ftp/ftp_directory_listing_parser_mlsd_unittest.cc deleted file mode 100644 index f65abc2..0000000 --- a/net/ftp/ftp_directory_listing_parser_mlsd_unittest.cc +++ /dev/null @@ -1,68 +0,0 @@ -// Copyright (c) 2010 The Chromium Authors. All rights reserved. -// Use of this source code is governed by a BSD-style license that can be -// found in the LICENSE file. - -#include "net/ftp/ftp_directory_listing_parser_unittest.h" - -#include "base/format_macros.h" -#include "base/string_util.h" -#include "base/stringprintf.h" -#include "net/ftp/ftp_directory_listing_parser_mlsd.h" - -namespace { - -typedef net::FtpDirectoryListingParserTest FtpDirectoryListingParserMlsdTest; - -TEST_F(FtpDirectoryListingParserMlsdTest, Good) { - const struct SingleLineTestData good_cases[] = { - { "type=file;size=380565;modify=20030606190749; README", - net::FtpDirectoryListingEntry::FILE, "README", 380565, - 2003, 6, 6, 19, 7 }, - { "type=dir;sizd=512;modify=20031021200128; pub", - net::FtpDirectoryListingEntry::DIRECTORY, "pub", -1, - 2003, 10, 21, 20, 1 }, - { "type=dir;sizd=512;modify=20091009080706;UNIX.mode=0755; pub", - net::FtpDirectoryListingEntry::DIRECTORY, "pub", -1, - 2009, 10, 9, 8, 7 }, - { "type=dir;modify=20010414155237;UNIX.mode=0555;unique=6ag5b4e400; etc", - net::FtpDirectoryListingEntry::DIRECTORY, "etc", -1, - 2001, 4, 14, 15, 52 }, - }; - for (size_t i = 0; i < arraysize(good_cases); i++) { - SCOPED_TRACE(base::StringPrintf("Test[%" PRIuS "]: %s", i, - good_cases[i].input)); - - net::FtpDirectoryListingParserMlsd parser; - RunSingleLineTestCase(&parser, good_cases[i]); - } -} - -TEST_F(FtpDirectoryListingParserMlsdTest, Bad) { - const char* bad_cases[] = { - "", - " ", - " ", - ";", - "; ", - " ;", - " foo", - "garbage", - "total 5", - "type=file;size=380565;modify=20030606190749;README", - "type=file;size=380565;modify=20030606190749;", - "type=file;size=380565;modify=20030606190749", - "size=380565;modify=20030606190749; README", - "type=file;modify=20030606190749; README", - "type=file;size=380565; README", - "type=file; size=380565; modify=20030606190749; README", - " type=file;size=380565;modify=20030606190749; README", - "type=file;size=garbage;modify=20030606190749; README", - "type=file;size=380565;modify=garbage; README", - }; - for (size_t i = 0; i < arraysize(bad_cases); i++) { - net::FtpDirectoryListingParserMlsd parser; - EXPECT_FALSE(parser.ConsumeLine(UTF8ToUTF16(bad_cases[i]))) << bad_cases[i]; - } -} - -} // namespace diff --git a/net/ftp/ftp_network_transaction.cc b/net/ftp/ftp_network_transaction.cc index bfda5bd..0285e08 100644 --- a/net/ftp/ftp_network_transaction.cc +++ b/net/ftp/ftp_network_transaction.cc @@ -371,9 +371,6 @@ int FtpNetworkTransaction::ProcessCtrlResponse() { case COMMAND_CWD: rv = ProcessResponseCWD(response); break; - case COMMAND_MLSD: - rv = ProcessResponseMLSD(response); - break; case COMMAND_LIST: rv = ProcessResponseLIST(response); break; @@ -394,9 +391,6 @@ int FtpNetworkTransaction::ProcessCtrlResponse() { case COMMAND_RETR: rv = ProcessResponseRETR(response); break; - case COMMAND_MLSD: - rv = ProcessResponseMLSD(response); - break; case COMMAND_LIST: rv = ProcessResponseLIST(response); break; @@ -573,10 +567,6 @@ int FtpNetworkTransaction::DoLoop(int result) { DCHECK(rv == OK); rv = DoCtrlWriteCWD(); break; - case STATE_CTRL_WRITE_MLSD: - DCHECK(rv == 0); - rv = DoCtrlWriteMLSD(); - break; case STATE_CTRL_WRITE_LIST: DCHECK(rv == OK); rv = DoCtrlWriteLIST(); @@ -1073,7 +1063,7 @@ int FtpNetworkTransaction::ProcessResponseCWD(const FtpCtrlResponse& response) { case ERROR_CLASS_INITIATED: return Stop(ERR_INVALID_RESPONSE); case ERROR_CLASS_OK: - next_state_ = STATE_CTRL_WRITE_MLSD; + next_state_ = STATE_CTRL_WRITE_LIST; break; case ERROR_CLASS_INFO_NEEDED: return Stop(ERR_INVALID_RESPONSE); @@ -1104,41 +1094,6 @@ int FtpNetworkTransaction::ProcessResponseCWD(const FtpCtrlResponse& response) { return OK; } -// MLSD command -int FtpNetworkTransaction::DoCtrlWriteMLSD() { - next_state_ = STATE_CTRL_READ; - return SendFtpCommand("MLSD", COMMAND_MLSD); -} - -int FtpNetworkTransaction::ProcessResponseMLSD( - const FtpCtrlResponse& response) { - switch (GetErrorClass(response.status_code)) { - case ERROR_CLASS_INITIATED: - // We want the client to start reading the response at this point. - // It got here either through Start or RestartWithAuth. We want that - // method to complete. Not setting next state here will make DoLoop exit - // and in turn make Start/RestartWithAuth complete. - response_.is_directory_listing = true; - break; - case ERROR_CLASS_OK: - response_.is_directory_listing = true; - next_state_ = STATE_CTRL_WRITE_QUIT; - break; - case ERROR_CLASS_INFO_NEEDED: - return Stop(ERR_INVALID_RESPONSE); - case ERROR_CLASS_TRANSIENT_ERROR: - case ERROR_CLASS_PERMANENT_ERROR: - // Fallback to the LIST command, more widely supported, - // but without a specified output format. - next_state_ = STATE_CTRL_WRITE_LIST; - break; - default: - NOTREACHED(); - return Stop(ERR_UNEXPECTED); - } - return OK; -} - // LIST command int FtpNetworkTransaction::DoCtrlWriteLIST() { std::string command(system_type_ == SYSTEM_TYPE_VMS ? "LIST *.*;0" : "LIST"); diff --git a/net/ftp/ftp_network_transaction.h b/net/ftp/ftp_network_transaction.h index 5bad335..678308a 100644 --- a/net/ftp/ftp_network_transaction.h +++ b/net/ftp/ftp_network_transaction.h @@ -58,7 +58,6 @@ class FtpNetworkTransaction : public FtpTransaction { COMMAND_SIZE, COMMAND_RETR, COMMAND_CWD, - COMMAND_MLSD, COMMAND_LIST, COMMAND_QUIT, }; @@ -142,8 +141,6 @@ class FtpNetworkTransaction : public FtpTransaction { int ProcessResponseSIZE(const FtpCtrlResponse& response); int DoCtrlWriteCWD(); int ProcessResponseCWD(const FtpCtrlResponse& response); - int DoCtrlWriteMLSD(); - int ProcessResponseMLSD(const FtpCtrlResponse& response); int DoCtrlWriteLIST(); int ProcessResponseLIST(const FtpCtrlResponse& response); int DoCtrlWriteQUIT(); @@ -234,7 +231,6 @@ class FtpNetworkTransaction : public FtpTransaction { STATE_CTRL_WRITE_RETR, STATE_CTRL_WRITE_SIZE, STATE_CTRL_WRITE_CWD, - STATE_CTRL_WRITE_MLSD, STATE_CTRL_WRITE_LIST, STATE_CTRL_WRITE_QUIT, // Data connection states: diff --git a/net/ftp/ftp_network_transaction_unittest.cc b/net/ftp/ftp_network_transaction_unittest.cc index 1c22c5b..8da3baf 100644 --- a/net/ftp/ftp_network_transaction_unittest.cc +++ b/net/ftp/ftp_network_transaction_unittest.cc @@ -41,7 +41,6 @@ class FtpSocketDataProvider : public DynamicSocketDataProvider { PRE_SIZE, PRE_EPSV, PRE_PASV, - PRE_MLSD, PRE_LIST, PRE_RETR, PRE_CWD, @@ -189,11 +188,7 @@ class FtpSocketDataProviderDirectoryListing : public FtpSocketDataProvider { return Verify("SIZE /\r\n", data, PRE_CWD, "550 I can only retrieve regular files\r\n"); case PRE_CWD: - return Verify("CWD /\r\n", data, PRE_MLSD, "200 OK\r\n"); - case PRE_MLSD: - return Verify("MLSD\r\n", data, PRE_QUIT, - "150 Accepted data connection\r\n" - "226 MLSD complete\r\n"); + return Verify("CWD /\r\n", data, PRE_LIST, "200 OK\r\n"); case PRE_LIST: return Verify("LIST\r\n", data, PRE_QUIT, "200 OK\r\n"); default: @@ -275,10 +270,8 @@ class FtpSocketDataProviderVMSDirectoryListing : public FtpSocketDataProvider { return Verify("SIZE ANONYMOUS_ROOT:[000000]dir\r\n", data, PRE_CWD, "550 I can only retrieve regular files\r\n"); case PRE_CWD: - return Verify("CWD ANONYMOUS_ROOT:[dir]\r\n", data, PRE_MLSD, + return Verify("CWD ANONYMOUS_ROOT:[dir]\r\n", data, PRE_LIST, "200 OK\r\n"); - case PRE_MLSD: - return Verify("MLSD\r\n", data, PRE_LIST, "500 Invalid command\r\n"); case PRE_LIST: return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n"); default: @@ -315,10 +308,8 @@ class FtpSocketDataProviderVMSDirectoryListingRootDirectory return Verify("SIZE ANONYMOUS_ROOT\r\n", data, PRE_CWD, "550 I can only retrieve regular files\r\n"); case PRE_CWD: - return Verify("CWD ANONYMOUS_ROOT:[000000]\r\n", data, PRE_MLSD, + return Verify("CWD ANONYMOUS_ROOT:[000000]\r\n", data, PRE_LIST, "200 OK\r\n"); - case PRE_MLSD: - return Verify("MLSD\r\n", data, PRE_LIST, "500 Invalid command\r\n"); case PRE_LIST: return Verify("LIST *.*;0\r\n", data, PRE_QUIT, "200 OK\r\n"); default: @@ -1329,16 +1320,6 @@ TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailCwd) { ERR_FTP_FAILED); } -TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailMlsd) { - FtpSocketDataProviderDirectoryListing ctrl_socket; - TransactionFailHelper(&ctrl_socket, - "ftp://host", - FtpSocketDataProvider::PRE_MLSD, - FtpSocketDataProvider::PRE_LIST, - "500 Unrecognized command\r\n", - OK); -} - TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailList) { FtpSocketDataProviderVMSDirectoryListing ctrl_socket; // Use unallocated 599 FTP error code to make sure it falls into the generic diff --git a/net/ftp/ftp_server_type_histograms.h b/net/ftp/ftp_server_type_histograms.h index 6a856b1..e89ad3d 100644 --- a/net/ftp/ftp_server_type_histograms.h +++ b/net/ftp/ftp_server_type_histograms.h @@ -24,8 +24,8 @@ enum FtpServerType { SERVER_WINDOWS = 10, // Server using Windows listing style. SERVER_VMS = 11, // Server using VMS listing style. SERVER_NETWARE = 12, // Server using Netware listing style. - SERVER_MLSD = 13, // Server using MLSD listing (RFC-3659). - SERVER_HPRC = 14, // Server using HPRC listing (http://crbug.com/56547). + + // Types 13-14 are RESERVED (were earlier used for MLSD listings). NUM_OF_SERVER_TYPES }; diff --git a/net/net.gyp b/net/net.gyp index 31b9cea..495d8b7 100644 --- a/net/net.gyp +++ b/net/net.gyp @@ -404,12 +404,8 @@ 'ftp/ftp_directory_listing_buffer.h', 'ftp/ftp_directory_listing_parser.cc', 'ftp/ftp_directory_listing_parser.h', - 'ftp/ftp_directory_listing_parser_hprc.cc', - 'ftp/ftp_directory_listing_parser_hprc.h', 'ftp/ftp_directory_listing_parser_ls.cc', 'ftp/ftp_directory_listing_parser_ls.h', - 'ftp/ftp_directory_listing_parser_mlsd.cc', - 'ftp/ftp_directory_listing_parser_mlsd.h', 'ftp/ftp_directory_listing_parser_netware.cc', 'ftp/ftp_directory_listing_parser_netware.h', 'ftp/ftp_directory_listing_parser_vms.cc', @@ -892,8 +888,6 @@ 'ftp/ftp_ctrl_response_buffer_unittest.cc', 'ftp/ftp_directory_listing_buffer_unittest.cc', 'ftp/ftp_directory_listing_parser_ls_unittest.cc', - 'ftp/ftp_directory_listing_parser_hprc_unittest.cc', - 'ftp/ftp_directory_listing_parser_mlsd_unittest.cc', 'ftp/ftp_directory_listing_parser_netware_unittest.cc', 'ftp/ftp_directory_listing_parser_vms_unittest.cc', 'ftp/ftp_directory_listing_parser_windows_unittest.cc', |