Be explicit with sticky removal, so two simultaneous processes don't create a race where sticky is left enabled.
authorMahlon E. Smith <mahlon@martini.nu>
Thu, 03 Oct 2019 11:44:44 -0700
changeset 28 99fdbf4a5f37
parent 27 a629597fd647
child 29 5e07ff7d5601
Be explicit with sticky removal, so two simultaneous processes don't create a race where sticky is left enabled.
lib/ezmlm.rb
lib/ezmlm/list.rb
--- a/lib/ezmlm.rb	Mon Sep 02 09:00:47 2019 -0700
+++ b/lib/ezmlm.rb	Thu Oct 03 11:44:44 2019 -0700
@@ -11,10 +11,10 @@
 #   end
 #
 module Ezmlm
-	# $Id$
+	# $Id: ezmlm.rb,v 81cc7d47f68f 2017/05/30 18:08:48 mahlon $
 
 	# Package version
-	VERSION = '1.1.1'
+	VERSION = '1.1.2'
 
 	# Suck in the components.
 	#
--- a/lib/ezmlm/list.rb	Mon Sep 02 09:00:47 2019 -0700
+++ b/lib/ezmlm/list.rb	Thu Oct 03 11:44:44 2019 -0700
@@ -1,7 +1,6 @@
 #!/usr/bin/ruby
 # vim: set nosta noet ts=4 sw=4:
 
-
 require 'pathname'
 require 'time'
 require 'etc'
@@ -14,7 +13,7 @@
 #
 #---
 class Ezmlm::List
-	#  $Id$
+	#  $Id: list.rb,v a89d91d4b157 2017/06/23 17:54:26 mahlon $
 
 	# Valid subdirectories/sections for subscriptions.
 	SUBSCRIPTION_DIRS = %w[ deny mod digest allow ]
@@ -824,13 +823,11 @@
 	###
 	def with_safety( &block )
 		home = self.homedir
-		mode = home.stat.mode
-
-		home.chmod( mode | 01000 ) # enable sticky
+		home.chmod( home.stat.mode | 01000 ) # enable sticky
 		yield
 
 	ensure
-		home.chmod( mode )
+		home.chmod( home.stat.mode & ~01000 ) # disable sticky
 	end
 
 end # class Ezmlm::List