Blame SOURCES/bz2116839-01-fix-ruby-socket-permissions.patch

fe4db9
From 826b217734dc7d56199749382f4845193b38f1d1 Mon Sep 17 00:00:00 2001
fe4db9
From: Tomas Jelinek <tojeline@redhat.com>
fe4db9
Date: Wed, 10 Aug 2022 14:47:53 +0200
fe4db9
Subject: [PATCH] fix ruby socket permissions
fe4db9
fe4db9
---
fe4db9
 pcsd/rserver.rb | 23 +++++++++++++++++++++++
fe4db9
 1 file changed, 23 insertions(+)
fe4db9
fe4db9
diff --git a/pcsd/rserver.rb b/pcsd/rserver.rb
fe4db9
index e2c5e2a1..4fde639e 100644
fe4db9
--- a/pcsd/rserver.rb
fe4db9
+++ b/pcsd/rserver.rb
fe4db9
@@ -7,6 +7,29 @@ require 'thin'
fe4db9
 
fe4db9
 require 'settings.rb'
fe4db9
 
fe4db9
+# Replace Thin::Backends::UnixServer:connect
fe4db9
+# The only change is 'File.umask(0o777)' instead of 'File.umask(0)' to properly
fe4db9
+# set python-ruby socket permissions
fe4db9
+module Thin
fe4db9
+  module Backends
fe4db9
+    class UnixServer < Base
fe4db9
+      def connect
fe4db9
+        at_exit { remove_socket_file } # In case it crashes
fe4db9
+        old_umask = File.umask(0o077)
fe4db9
+        begin
fe4db9
+          EventMachine.start_unix_domain_server(@socket, UnixConnection, &method(:initialize_connection))
fe4db9
+          # HACK EventMachine.start_unix_domain_server doesn't return the connection signature
fe4db9
+          #      so we have to go in the internal stuff to find it.
fe4db9
+        @signature = EventMachine.instance_eval{@acceptors.keys.first}
fe4db9
+        ensure
fe4db9
+          File.umask(old_umask)
fe4db9
+        end
fe4db9
+      end
fe4db9
+    end
fe4db9
+  end
fe4db9
+end
fe4db9
+
fe4db9
+
fe4db9
 def pack_response(response)
fe4db9
   return [200, {}, [response.to_json.to_str]]
fe4db9
 end
fe4db9
-- 
fe4db9
2.37.1
fe4db9