diff options
author | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-23 05:19:20 +0000 |
---|---|---|
committer | evan@chromium.org <evan@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-10-23 05:19:20 +0000 |
commit | ba74b0d2f492a1a7a310af5e69fa7a0812ce6f52 (patch) | |
tree | eacff9788a950e58118148b5cae3f236840a49b0 /net | |
parent | 3c24a4682e05dc4496c0a9d898872ac39d142817 (diff) | |
download | chromium_src-ba74b0d2f492a1a7a310af5e69fa7a0812ce6f52.zip chromium_src-ba74b0d2f492a1a7a310af5e69fa7a0812ce6f52.tar.gz chromium_src-ba74b0d2f492a1a7a310af5e69fa7a0812ce6f52.tar.bz2 |
Thread IO safety: annotate file_util, and block IO thread from doing IO
- Mark functions in file_util_posix as requiring permission to perform
disk actions.
- Mark the IO thread as disallowed from performing disk actions.
- Temporarily work around the protections in places where we currently
have bugs.
BUG=59847,59849,60207,60211,60394
TEST=no dchecks in debug builds
Review URL: http://codereview.chromium.org/3872002
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@63636 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'net')
-rw-r--r-- | net/socket/ssl_client_socket_nss.cc | 6 | ||||
-rw-r--r-- | net/url_request/url_request_file_job.cc | 10 |
2 files changed, 15 insertions, 1 deletions
diff --git a/net/socket/ssl_client_socket_nss.cc b/net/socket/ssl_client_socket_nss.cc index 136f138..324f50c 100644 --- a/net/socket/ssl_client_socket_nss.cc +++ b/net/socket/ssl_client_socket_nss.cc @@ -71,6 +71,7 @@ #include "base/string_number_conversions.h" #include "base/string_util.h" #include "base/stringprintf.h" +#include "base/thread_restrictions.h" #include "base/values.h" #include "net/base/address_list.h" #include "net/base/cert_status_flags.h" @@ -176,6 +177,11 @@ class NSSSSLInitSingleton { // thread-safe, and the NSS SSL library will only ever be initialized once. // The NSS SSL library will be properly shut down on program exit. void EnsureNSSSSLInit() { + // Initializing SSL causes us to do blocking IO. + // Temporarily allow it until we fix + // http://code.google.com/p/chromium/issues/detail?id=59847 + base::ThreadRestrictions::ScopedAllowIO allow_io; + Singleton<NSSSSLInitSingleton>::get(); } diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc index 8c282ff..f9c6559 100644 --- a/net/url_request/url_request_file_job.cc +++ b/net/url_request/url_request_file_job.cc @@ -23,6 +23,7 @@ #include "base/message_loop.h" #include "base/platform_file.h" #include "base/string_util.h" +#include "base/thread_restrictions.h" #include "build/build_config.h" #include "googleurl/src/gurl.h" #include "net/base/io_buffer.h" @@ -128,8 +129,15 @@ void URLRequestFileJob::Start() { return; } #endif + + // URL requests should not block on the disk! + // http://code.google.com/p/chromium/issues/detail?id=59849 + bool exists; base::PlatformFileInfo file_info; - bool exists = file_util::GetFileInfo(file_path_, &file_info); + { + base::ThreadRestrictions::ScopedAllowIO allow_io; + exists = file_util::GetFileInfo(file_path_, &file_info); + } // Continue asynchronously. MessageLoop::current()->PostTask(FROM_HERE, NewRunnableMethod( |