Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(73)

Side by Side Diff: net/ftp/ftp_network_transaction.cc

Issue 3012028: Recommit r53882 "FTP: fix navigation to systems with broken EPSV support."i" (Closed)
Patch Set: Created 10 years, 4 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « no previous file | no next file » | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2010 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2010 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #include "net/ftp/ftp_network_transaction.h" 5 #include "net/ftp/ftp_network_transaction.h"
6 6
7 #include "base/compiler_specific.h" 7 #include "base/compiler_specific.h"
8 #include "base/histogram.h" 8 #include "base/histogram.h"
9 #include "base/string_util.h" 9 #include "base/string_util.h"
10 #include "base/utf_string_conversions.h" 10 #include "base/utf_string_conversions.h"
(...skipping 1169 matching lines...) Expand 10 before | Expand all | Expand 10 after
1180 int rv = ctrl_socket_->GetPeerAddress(&data_address); 1180 int rv = ctrl_socket_->GetPeerAddress(&data_address);
1181 if (rv != OK) 1181 if (rv != OK)
1182 return Stop(rv); 1182 return Stop(rv);
1183 data_address.SetPort(data_connection_port_); 1183 data_address.SetPort(data_connection_port_);
1184 data_socket_.reset(socket_factory_->CreateTCPClientSocket( 1184 data_socket_.reset(socket_factory_->CreateTCPClientSocket(
1185 data_address, net_log_.net_log())); 1185 data_address, net_log_.net_log()));
1186 return data_socket_->Connect(&io_callback_); 1186 return data_socket_->Connect(&io_callback_);
1187 } 1187 }
1188 1188
1189 int FtpNetworkTransaction::DoDataConnectComplete(int result) { 1189 int FtpNetworkTransaction::DoDataConnectComplete(int result) {
1190 if (result == ERR_CONNECTION_TIMED_OUT && use_epsv_) {
1191 // It's possible we hit a broken server, sadly. Fall back to PASV.
1192 // TODO(phajdan.jr): remember it for future transactions with this server.
1193 // TODO(phajdan.jr): write a test for this code path.
1194 use_epsv_ = false;
1195 next_state_ = STATE_CTRL_WRITE_PASV;
1196 return OK;
1197 }
1198
1199 // Only record the connection error after we've applied all our fallbacks.
1200 // We want to capture the final error, one we're not going to recover from.
1190 RecordDataConnectionError(result); 1201 RecordDataConnectionError(result);
1202
1203 if (result != OK)
1204 return Stop(result);
1205
1191 next_state_ = STATE_CTRL_WRITE_SIZE; 1206 next_state_ = STATE_CTRL_WRITE_SIZE;
1192 return OK; 1207 return OK;
1193 } 1208 }
1194 1209
1195 int FtpNetworkTransaction::DoDataRead() { 1210 int FtpNetworkTransaction::DoDataRead() {
1196 DCHECK(read_data_buf_); 1211 DCHECK(read_data_buf_);
1197 DCHECK_GT(read_data_buf_len_, 0); 1212 DCHECK_GT(read_data_buf_len_, 0);
1198 1213
1199 if (data_socket_ == NULL || !data_socket_->IsConnected()) { 1214 if (data_socket_ == NULL || !data_socket_->IsConnected()) {
1200 // If we don't destroy the data socket completely, some servers will wait 1215 // If we don't destroy the data socket completely, some servers will wait
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after
1303 if (!had_error_type[type]) { 1318 if (!had_error_type[type]) {
1304 had_error_type[type] = true; 1319 had_error_type[type] = true;
1305 UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorHappened", 1320 UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorHappened",
1306 type, NUM_OF_NET_ERROR_TYPES); 1321 type, NUM_OF_NET_ERROR_TYPES);
1307 } 1322 }
1308 UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorCount", 1323 UMA_HISTOGRAM_ENUMERATION("Net.FtpDataConnectionErrorCount",
1309 type, NUM_OF_NET_ERROR_TYPES); 1324 type, NUM_OF_NET_ERROR_TYPES);
1310 } 1325 }
1311 1326
1312 } // namespace net 1327 } // namespace net
OLDNEW
« no previous file with comments | « no previous file | no next file » | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698