Index: net/url_request/url_request_file_job.cc |
diff --git a/net/url_request/url_request_file_job.cc b/net/url_request/url_request_file_job.cc |
index 8c282ffb231425981a5ac21ff49ec96d9ff2c438..f9c6559065022a43e9e018c1356af2ef499876e0 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( |