mirror of
https://git.openafs.org/openafs.git
synced 2025-01-20 07:51:00 +00:00
FBSD: give osi_NetReceive time to shutdown, reprise
The delay logic needs to follow soshutdown, and precede soclose. The thread in osi_NetReceive is racing to do another soreceive. That thread needs to win the race and notice the socket is shut down before rx_socket is torn down. Change-Id: Id8424dcfa2498550a190d277017b7ea15fc11023 Reviewed-on: http://gerrit.openafs.org/2613 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
5c0aebc421
commit
2ea508ea0f
@ -87,7 +87,6 @@ osi_StopListener(void)
|
||||
if (haveGlock)
|
||||
AFS_GUNLOCK();
|
||||
soshutdown(rx_socket, SHUT_RDWR);
|
||||
soclose(rx_socket);
|
||||
p = pfind(rxk_ListenerPid);
|
||||
afs_warn("osi_StopListener: rxk_ListenerPid %lx\n", p);
|
||||
if (p)
|
||||
@ -104,12 +103,13 @@ osi_StopListener(void)
|
||||
MUTEX_ENTER(&s_mtx);
|
||||
tries = 3;
|
||||
while ((tries > 0) && (!so_is_disconn(rx_socket))) {
|
||||
afs_warn("osi_StopListener: waiting (%d) ", tries);
|
||||
msleep(&osi_StopListener, &s_mtx, PSOCK | PCATCH,
|
||||
"rx_shutdown_timedwait", 1 * hz);
|
||||
--tries;
|
||||
}
|
||||
if (so_is_disconn(rx_socket))
|
||||
soclose(rx_socket);
|
||||
soclose(rx_socket);
|
||||
MUTEX_EXIT(&s_mtx);
|
||||
MUTEX_DESTROY(&s_mtx);
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user