Index: net/ftp/ftp_network_transaction_unittest.cc |
diff --git a/net/ftp/ftp_network_transaction_unittest.cc b/net/ftp/ftp_network_transaction_unittest.cc |
index af86b130959bd5d7699c0145c1c6c04fb1de5fc2..169e7886abb5ab4c156841df4fc635300464e4e3 100644 |
--- a/net/ftp/ftp_network_transaction_unittest.cc |
+++ b/net/ftp/ftp_network_transaction_unittest.cc |
@@ -502,6 +502,27 @@ class FtpMockControlSocketEvilLogin : public FtpMockControlSocketFileDownload { |
DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketEvilLogin); |
}; |
+class FtpMockControlSocketCloseConnection : public FtpMockControlSocket { |
+ public: |
+ FtpMockControlSocketCloseConnection() { |
+ } |
+ |
+ virtual MockWriteResult OnWrite(const std::string& data) { |
+ if (InjectFault()) |
+ return MockWriteResult(true, data.length()); |
+ switch (state()) { |
+ case PRE_USER: |
+ return Verify("USER anonymous\r\n", data, |
+ PRE_QUIT, ""); |
+ default: |
+ return FtpMockControlSocket::OnWrite(data); |
+ } |
+ } |
+ |
+ private: |
+ DISALLOW_COPY_AND_ASSIGN(FtpMockControlSocketCloseConnection); |
+}; |
+ |
class FtpNetworkTransactionTest : public PlatformTest { |
public: |
FtpNetworkTransactionTest() |
@@ -849,6 +870,12 @@ TEST_F(FtpNetworkTransactionTest, Escaping) { |
OK); |
} |
+// Regression test for http://crbug.com/25023. |
+TEST_F(FtpNetworkTransactionTest, CloseConnection) { |
+ FtpMockControlSocketCloseConnection ctrl_socket; |
+ ExecuteTransaction(&ctrl_socket, "ftp://host", ERR_EMPTY_RESPONSE); |
+} |
+ |
TEST_F(FtpNetworkTransactionTest, DirectoryTransactionFailUser) { |
FtpMockControlSocketDirectoryListing ctrl_socket; |
TransactionFailHelper(&ctrl_socket, |