diff options
author | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-27 01:29:28 +0000 |
---|---|---|
committer | davidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98> | 2010-08-27 01:29:28 +0000 |
commit | 53f4826c9fe6bea1718a499dc686f26dbf24ab50 (patch) | |
tree | b2d1f444aa73e927ff215e7dc78e851bc213a056 /base/scoped_temp_dir.cc | |
parent | 34d3608cd3c631811eef51bc5cdd8ce2a2670076 (diff) | |
download | chromium_src-53f4826c9fe6bea1718a499dc686f26dbf24ab50.zip chromium_src-53f4826c9fe6bea1718a499dc686f26dbf24ab50.tar.gz chromium_src-53f4826c9fe6bea1718a499dc686f26dbf24ab50.tar.bz2 |
Move the SingletonSocket to a temporary directory
This is to workaround problems on certain network filesystems (notably AFS)
which do not support Unix domain sockets. We move the sockets into a temporary
folder and symlink. To avoid the possibility of a dangling link to a missing
(and later intercepted) remote directory, we create and check cookie files
and rely on the stickiness of /tmp/ to avoid a race condition in the check.
R=mattm
BUG=44606
TEST=ProcessSingletonLinuxTest.*
Review URL: http://codereview.chromium.org/2838034
git-svn-id: svn://svn.chromium.org/chrome/trunk/src@57623 0039d316-1c4b-4281-b951-d872f2087c98
Diffstat (limited to 'base/scoped_temp_dir.cc')
-rw-r--r-- | base/scoped_temp_dir.cc | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/base/scoped_temp_dir.cc b/base/scoped_temp_dir.cc index 958dcbc..a510ddf 100644 --- a/base/scoped_temp_dir.cc +++ b/base/scoped_temp_dir.cc @@ -11,8 +11,7 @@ ScopedTempDir::ScopedTempDir() { } ScopedTempDir::~ScopedTempDir() { - if (!path_.empty() && !file_util::Delete(path_, true)) - LOG(ERROR) << "ScopedTempDir unable to delete " << path_.value(); + Delete(); } bool ScopedTempDir::CreateUniqueTempDir() { @@ -50,6 +49,12 @@ bool ScopedTempDir::Set(const FilePath& path) { return true; } +void ScopedTempDir::Delete() { + if (!path_.empty() && !file_util::Delete(path_, true)) + LOG(ERROR) << "ScopedTempDir unable to delete " << path_.value(); + path_.clear(); +} + FilePath ScopedTempDir::Take() { FilePath ret = path_; path_ = FilePath(); |