From 46b8dc55c749502a8416b5959bf78c49f5912c93 Mon Sep 17 00:00:00 2001 From: Jeffrey Altman Date: Sat, 7 Mar 2009 14:11:01 +0000 Subject: [PATCH] STABLE14-avoid-blocking-with-connhashtable-lock-in-reapconnections-20090307 LICENSE BSD instead of potentially blocking waiting for a call lock, assume if the call is locked, the conn is still busy. also, don't even try to get the conn data lock if we don't need to (cherry picked from commit 581fd18bd9c3fe8e07169c60a7cde9e72e8af89c) --- src/rx/rx.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/rx/rx.c b/src/rx/rx.c index c16aec29d..94a939547 100644 --- a/src/rx/rx.c +++ b/src/rx/rx.c @@ -5789,8 +5789,11 @@ rxi_ReapConnections(void) for (i = 0; i < RX_MAXCALLS; i++) { call = conn->call[i]; if (call) { + int code; havecalls = 1; - MUTEX_ENTER(&call->lock); + code = MUTEX_TRYENTER(&call->lock); + if (!code) + continue; #ifdef RX_ENABLE_LOCKS result = rxi_CheckCall(call, 1); #else /* RX_ENABLE_LOCKS */ -- 2.39.5