mirror of
https://github.com/opnsense/src.git
synced 2026-06-10 17:22:46 -04:00
For the case where another thread was doing a connect and that
connect failed, the thread would be left stuck in msleep() indefinitely, since it would call msleep() again for the case where rc_client == NULL. Change the loop criteria and the if just after the loop, so that this case is handled correctly. Reviewed by: dfr Approved by: kib (mentor)
This commit is contained in:
parent
0e8cc7e748
commit
dce35fe0ff
1 changed files with 2 additions and 2 deletions
|
|
@ -154,7 +154,7 @@ again:
|
|||
return (RPC_CANTSEND);
|
||||
}
|
||||
if (rc->rc_connecting) {
|
||||
while (!rc->rc_closed && !rc->rc_client) {
|
||||
while (!rc->rc_closed && !rc->rc_client && rc->rc_connecting) {
|
||||
error = msleep(rc, &rc->rc_lock,
|
||||
rc->rc_intr ? PCATCH : 0, "rpcrecon", 0);
|
||||
if (error) {
|
||||
|
|
@ -166,7 +166,7 @@ again:
|
|||
* If the other guy failed to connect, we might as
|
||||
* well have another go.
|
||||
*/
|
||||
if (!rc->rc_client && !rc->rc_connecting)
|
||||
if (!rc->rc_client || rc->rc_closed)
|
||||
goto again;
|
||||
mtx_unlock(&rc->rc_lock);
|
||||
return (RPC_SUCCESS);
|
||||
|
|
|
|||
Loading…
Reference in a new issue