summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorKevin Coffman <kwc@citi.umich.edu>2009-04-03 15:18:16 -0400
committerSteve Dickson <steved@redhat.com>2009-04-03 15:18:16 -0400
commit7de6c8c54ac195d659c8ac2d2ac01ef47c6c3ecd (patch)
treefae0c13607a549318c718da064aee40000062e00
parentf0ed8401e854e1cbd23b2fb5dca5e88dec2df7c4 (diff)
downloadnfs-utils-7de6c8c54ac195d659c8ac2d2ac01ef47c6c3ecd.tar.gz
nfs-utils-7de6c8c54ac195d659c8ac2d2ac01ef47c6c3ecd.tar.xz
nfs-utils-7de6c8c54ac195d659c8ac2d2ac01ef47c6c3ecd.zip
svcgssd: check the return code from qword_eol() and log failures
If qword_eol() fails while writing the context information, log an indication of the failure. This addresses at least one cause of the intermittent, and previously undiagnosed, problem of the server returning GSS_S_NO_CONTEXT when a context was seemingly successfully created and sent down to the kernel. In my case there was a mis-match between kernel and user-land configuration resulting in the proper kernel module not being loaded. Therefore the write of the context failed, but was not logged by svcgssd. When the kernel goes to find the resulting context, it was really not there and correctly returned GSS_S_NO_CONTEXT to the client. Signed-off-by: Kevin Coffman <kwc@citi.umich.edu> Signed-off-by: Steve Dickson <steved@redhat.com>
-rw-r--r--utils/gssd/svcgssd_proc.c4
1 files changed, 4 insertions, 0 deletions
diff --git a/utils/gssd/svcgssd_proc.c b/utils/gssd/svcgssd_proc.c
index b390bea..6f2ba61 100644
--- a/utils/gssd/svcgssd_proc.c
+++ b/utils/gssd/svcgssd_proc.c
@@ -109,6 +109,10 @@ do_svc_downcall(gss_buffer_desc *out_handle, struct svc_cred *cred,
qword_print(f, fname);
qword_printhex(f, context_token->value, context_token->length);
err = qword_eol(f);
+ if (err) {
+ printerr(1, "WARNING: error writing to downcall channel "
+ "%s: %s\n", SVCGSSD_CONTEXT_CHANNEL, strerror(errno));
+ }
fclose(f);
return err;
out_err: