From 35374bb5048d7e92e4c0871fbd32488514fd0da1 Mon Sep 17 00:00:00 2001 From: Phil Mesnier Date: Fri, 30 May 2014 23:02:53 +0000 Subject: Fri May 30 22:55:56 UTC 2014 Phil Mesnier * orbsvcs/orbsvcs/Naming/Storable_Naming_Context.h: * orbsvcs/orbsvcs/Naming/Storable_Naming_Context.cpp: * tao/Storable_FlatFileStream.cpp: Fix for the corner case of a race between redundant naming servers sharing a storable context file. --- TAO/tao/Storable_FlatFileStream.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'TAO/tao/Storable_FlatFileStream.cpp') diff --git a/TAO/tao/Storable_FlatFileStream.cpp b/TAO/tao/Storable_FlatFileStream.cpp index f5dfb02f216..4ae15f5b08f 100644 --- a/TAO/tao/Storable_FlatFileStream.cpp +++ b/TAO/tao/Storable_FlatFileStream.cpp @@ -128,7 +128,7 @@ TAO::Storable_FlatFileStream::Storable_FlatFileStream (const ACE_CString & file, , mode_(mode) { // filelock_ will be completely initialized in call to init (). - filelock_.handle_ = 0; + filelock_.handle_ = ACE_INVALID_HANDLE; filelock_.lockname_ = 0; } @@ -263,7 +263,10 @@ time_t TAO::Storable_FlatFileStream::last_changed(void) { ACE_stat st; - if (ACE_OS::fstat(filelock_.handle_, &st) != 0) + int result = filelock_.handle_ != ACE_INVALID_HANDLE ? + ACE_OS::fstat(filelock_.handle_, &st) : + ACE_OS::stat (file_.c_str (), &st); + if (result != 0) { TAOLIB_ERROR ((LM_ERROR, ACE_TEXT ("TAO (%P|%t) - ") -- cgit v1.2.1