diff options
Diffstat (limited to 'net/url_request/url_request_ftp_job.cc')
-rw-r--r-- | net/url_request/url_request_ftp_job.cc | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/net/url_request/url_request_ftp_job.cc b/net/url_request/url_request_ftp_job.cc index 62124e1..343c4d7 100644 --- a/net/url_request/url_request_ftp_job.cc +++ b/net/url_request/url_request_ftp_job.cc @@ -12,7 +12,6 @@ #include "net/base/load_flags.h" #include "net/base/net_errors.h" #include "net/base/net_util.h" -#include "net/ftp/ftp_auth_cache.h" #include "net/ftp/ftp_response_info.h" #include "net/ftp/ftp_transaction_factory.h" #include "net/http/http_response_headers.h" @@ -39,6 +38,26 @@ URLRequestFtpJob::URLRequestFtpJob( DCHECK(ftp_auth_cache); } +// static +URLRequestJob* URLRequestFtpJob::Factory(URLRequest* request, + NetworkDelegate* network_delegate, + const std::string& scheme) { + DCHECK_EQ(scheme, "ftp"); + + int port = request->url().IntPort(); + if (request->url().has_port() && + !IsPortAllowedByFtp(port) && !IsPortAllowedByOverride(port)) { + return new URLRequestErrorJob(request, + network_delegate, + ERR_UNSAFE_PORT); + } + + return new URLRequestFtpJob(request, + network_delegate, + request->context()->ftp_transaction_factory(), + request->context()->ftp_auth_cache()); +} + bool URLRequestFtpJob::IsSafeRedirect(const GURL& location) { // Disallow all redirects. return false; |