summaryrefslogtreecommitdiffstats
path: root/base/scoped_temp_dir.cc
diff options
context:
space:
mode:
authordavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 01:29:28 +0000
committerdavidben@chromium.org <davidben@chromium.org@0039d316-1c4b-4281-b951-d872f2087c98>2010-08-27 01:29:28 +0000
commit53f4826c9fe6bea1718a499dc686f26dbf24ab50 (patch)
treeb2d1f444aa73e927ff215e7dc78e851bc213a056 /base/scoped_temp_dir.cc
parent34d3608cd3c631811eef51bc5cdd8ce2a2670076 (diff)
downloadchromium_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.cc9
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();