This is an automated email from the git hooks/post-receive script.
rharwood pushed a change to branch master in repository gssproxy.
from c0d8538 Fix silent crash with duplicate config sections new af666af Emit debug on queue errors new 8590c5d Do not call gpm_grab_sock() twice
The 2 revisions listed above as "new" are entirely new to this repository and will be described in separate emails. The revisions listed as "adds" were already present in the repository and have only been added to this reference.
Summary of changes: proxy/src/client/gpm_common.c | 9 +++------ proxy/src/gp_workers.c | 2 ++ 2 files changed, 5 insertions(+), 6 deletions(-)
This is an automated email from the git hooks/post-receive script.
rharwood pushed a commit to branch master in repository gssproxy.
commit af666affbd4735ba437e3d89d9e22984a556ed16 Author: Simo Sorce simo@redhat.com Date: Thu Oct 26 11:47:54 2017 -0400
Emit debug on queue errors
Signed-off-by: Simo Sorce simo@redhat.com Reviewed-by: Robbie Harwood rharwood@redhat.com Merges: #218 --- proxy/src/gp_workers.c | 2 ++ 1 file changed, 2 insertions(+)
diff --git a/proxy/src/gp_workers.c b/proxy/src/gp_workers.c index 2a33c21..18f38f6 100644 --- a/proxy/src/gp_workers.c +++ b/proxy/src/gp_workers.c @@ -314,6 +314,8 @@ static void gp_handle_reply(verto_ctx *vctx, verto_ev *ev) case GP_QUERY_IN: /* ?! fallback and kill client conn */ case GP_QUERY_ERR: + GPDEBUGN(3, "[status] Handling query error, terminating CID %d.\n", + gp_conn_get_cid(q->conn)); gp_conn_free(q->conn); gp_query_free(q, true); break;
This is an automated email from the git hooks/post-receive script.
rharwood pushed a commit to branch master in repository gssproxy.
commit 8590c5dbc6fa07d0c366df23b982a4b6b9ffc259 Author: Simo Sorce simo@redhat.com Date: Thu Oct 26 16:59:18 2017 -0400
Do not call gpm_grab_sock() twice
In the gpm_get_ctx() call, we unnecessarily call gpm_grab_sock() which would cause the lock to be held by one thread and never released. We already call gpm_grab_sock() as the first thing after gpm_get_ctx() in gpm_make_call(), plus gpm_make_call() properly releases the socket once done.
This corrects the deadlock fix in 461a5fa9f91a2753ebeef6323a64239c35e2f250, which incorrectly released the lock we wanted to grab. This caused the socket to not be locked to our thread. Another thread could come along and change the global ctx while we were still using the socket from another thread, causing concurrency issues as only one request can be in flight on any given socket at the same time.
In special cases where the "thread" uid/gid changes (like in rpc.gssd), we end up closing the socket while we are still waiting for an answer from the server, causing additional issues and confusion.
[rharwood@redhat.com: squashed 2 commits; minor edits accordingly] Signed-off-by: Simo Sorce simo@redhat.com Reviewed-by: Robbie Harwood rharwood@redhat.com Merges: #218 --- proxy/src/client/gpm_common.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-)
diff --git a/proxy/src/client/gpm_common.c b/proxy/src/client/gpm_common.c index 75c64d7..f9f9258 100644 --- a/proxy/src/client/gpm_common.c +++ b/proxy/src/client/gpm_common.c @@ -163,7 +163,9 @@ static int gpm_grab_sock(struct gpm_ctx *gpmctx) ret = gpm_open_socket(gpmctx); }
- pthread_mutex_unlock(&gpmctx->lock); + if (ret) { + pthread_mutex_unlock(&gpmctx->lock); + } return ret; }
@@ -518,11 +520,6 @@ static struct gpm_ctx *gpm_get_ctx(void)
pthread_once(&gpm_init_once_control, gpm_init_once);
- ret = gpm_grab_sock(&gpm_global_ctx); - if (ret) { - return NULL; - } - return &gpm_global_ctx; }
gss-proxy@lists.fedorahosted.org