summaryrefslogtreecommitdiff
path: root/source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch')
-rw-r--r--source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch51
1 files changed, 51 insertions, 0 deletions
diff --git a/source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch b/source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch
new file mode 100644
index 00000000..c54d542e
--- /dev/null
+++ b/source/n/rpcbind/0004-Delete-the-unix-socket-only-if-we-have-created-it.patch
@@ -0,0 +1,51 @@
+From 3a664b1b5a310df39bd0f325b0edb1deb31c2249 Mon Sep 17 00:00:00 2001
+From: Laurent Bigonville <bigon@bigon.be>
+Date: Wed, 18 Nov 2015 14:34:26 -0500
+Subject: [PATCH 4/4] Delete the unix socket only if we have created it
+
+From: Laurent Bigonville <bigon@bigon.be>
+
+If systemd has created the unix socket on our behalf, we shouldn't try
+to delete it.
+
+https://bugzilla.redhat.com/show_bug.cgi?id=1279076
+
+Signed-off-by: Laurent Bigonville <bigon@bigon.be
+Signed-off-by: Steve Dickson <steved@redhat.com>
+---
+ src/rpcbind.c | 5 ++++-
+ 1 file changed, 4 insertions(+), 1 deletion(-)
+
+diff --git a/src/rpcbind.c b/src/rpcbind.c
+index 045daa1..c4265cd 100644
+--- a/src/rpcbind.c
++++ b/src/rpcbind.c
+@@ -87,6 +87,7 @@ static inline void __nss_configure_lookup(const char *db, const char *s) {}
+ int debugging = 0; /* Tell me what's going on */
+ int doabort = 0; /* When debugging, do an abort on errors */
+ int dofork = 1; /* fork? */
++int createdsocket = 0; /* Did I create the socket or systemd did it for me? */
+
+ rpcblist_ptr list_rbl; /* A list of version 3/4 rpcbind services */
+
+@@ -445,6 +446,7 @@ init_transport(struct netconfig *nconf)
+ memset(&sun, 0, sizeof sun);
+ sun.sun_family = AF_LOCAL;
+ unlink(_PATH_RPCBINDSOCK);
++ createdsocket = 1; /* We are now in the process of creating the unix socket */
+ strcpy(sun.sun_path, _PATH_RPCBINDSOCK);
+ addrlen = SUN_LEN(&sun);
+ sa = (struct sockaddr *)&sun;
+@@ -846,7 +848,8 @@ static void
+ terminate(int dummy /*__unused*/)
+ {
+ close(rpcbindlockfd);
+- unlink(_PATH_RPCBINDSOCK);
++ if(createdsocket)
++ unlink(_PATH_RPCBINDSOCK);
+ unlink(RPCBINDDLOCK);
+ #ifdef WARMSTART
+ write_warmstart(); /* Dump yourself */
+--
+2.6.4
+