diff --git a/Make-proc-file-failure-loud-but-nonfatal.patch b/Make-proc-file-failure-loud-but-nonfatal.patch new file mode 100644 index 0000000..3eabb88 --- /dev/null +++ b/Make-proc-file-failure-loud-but-nonfatal.patch @@ -0,0 +1,75 @@ +From bc4c8a61c0615ca76b930a22e3602d0e1ec900f1 Mon Sep 17 00:00:00 2001 +From: Robbie Harwood +Date: Thu, 25 May 2017 13:06:17 -0400 +Subject: [PATCH] Make proc file failure loud but nonfatal + +Signed-off-by: Robbie Harwood +Reviewed-by: Simo Sorce +Resolves: #190 +(cherry picked from commit 4f60bf02a1a68cbb26251e764357b753f80790f3) +--- + proxy/src/gp_init.c | 34 +++++++++++++++------------------- + 1 file changed, 15 insertions(+), 19 deletions(-) + +diff --git a/proxy/src/gp_init.c b/proxy/src/gp_init.c +index 4673f02..e69934d 100644 +--- a/proxy/src/gp_init.c ++++ b/proxy/src/gp_init.c +@@ -144,11 +144,11 @@ void init_proc_nfsd(struct gp_config *cfg) + { + char buf[] = "1"; + bool enabled = false; +- int fd, i, ret; ++ int fd, ret; + + /* check first if any service enabled kernel support */ +- for (i = 0; i < cfg->num_svcs; i++) { +- if (cfg->svcs[i]->kernel_nfsd == true) { ++ for (int i = 0; i < cfg->num_svcs; i++) { ++ if (cfg->svcs[i]->kernel_nfsd) { + enabled = true; + break; + } +@@ -161,30 +161,26 @@ void init_proc_nfsd(struct gp_config *cfg) + fd = open(LINUX_PROC_USE_GSS_PROXY_FILE, O_RDWR); + if (fd == -1) { + ret = errno; +- fprintf(stderr, "GSS-Proxy is not supported by this kernel since " +- "file %s could not be found: %d (%s)\n", +- LINUX_PROC_USE_GSS_PROXY_FILE, +- ret, gp_strerror(ret)); +- exit(1); ++ GPDEBUG("Kernel doesn't support GSS-Proxy (can't open %s: %d (%s))\n", ++ LINUX_PROC_USE_GSS_PROXY_FILE, ret, gp_strerror(ret)); ++ goto fail; + } + + ret = write(fd, buf, 1); + if (ret != 1) { + ret = errno; +- fprintf(stderr, "Failed to write to %s: %d (%s)\n", +- LINUX_PROC_USE_GSS_PROXY_FILE, +- ret, gp_strerror(ret)); +- exit(1); ++ GPDEBUG("Failed to write to %s: %d (%s)\n", ++ LINUX_PROC_USE_GSS_PROXY_FILE, ret, gp_strerror(ret)); + } + +- ret = close(fd); +- if (ret == -1) { +- ret = errno; +- fprintf(stderr, "Failed to close %s: %d (%s)\n", +- LINUX_PROC_USE_GSS_PROXY_FILE, +- ret, gp_strerror(ret)); +- exit(1); ++ close(fd); ++ if (ret != 0) { ++ goto fail; + } ++ ++ return; ++fail: ++ GPDEBUG("Problem with kernel communication! NFS server will not work\n"); + } + + void write_pid(void) diff --git a/gssproxy.spec b/gssproxy.spec index ddbd343..40e3918 100644 --- a/gssproxy.spec +++ b/gssproxy.spec @@ -1,6 +1,6 @@ Name: gssproxy Version: 0.7.0 -Release: 8%{?dist} +Release: 9%{?dist} Summary: GSSAPI Proxy Group: System Environment/Libraries @@ -22,6 +22,7 @@ Patch4: Update-systemd-file.patch Patch5: Fix-unused-variables.patch Patch6: Fix-segfault-when-no-config-files-are-present.patch Patch7: Include-header-for-writev.patch +Patch8: Make-proc-file-failure-loud-but-nonfatal.patch ### Dependencies ### Requires: krb5-libs >= 1.12.0 @@ -65,6 +66,7 @@ A proxy for GSSAPI credential handling %patch5 -p2 -b .Fix-unused-variables %patch6 -p2 -b .Fix-segfault-when-no-config-files-are-present %patch7 -p2 -b .Include-header-for-writev +%patch8 -p2 -b .Make-proc-file-failure-loud-but-nonfatal %build autoreconf -f -i @@ -120,6 +122,9 @@ rm -rf %{buildroot} %systemd_postun_with_restart gssproxy.service %changelog +* Thu May 25 2017 Robbie Harwood - 0.7.0-9 +- Make proc failure loud but nonfatal + * Wed May 24 2017 Robbie Harwood - 0.7.0-8 - Remove (buggy?) logic around NFS snippet.