mirror of
https://git.openafs.org/openafs.git
synced 2025-01-19 15:30:14 +00:00
darwin knet avoid rx socket during shutdown
theoretically a user thread can race us during shutdown and end up panicing us if the soclose happens at the wrong time. if we're shutting down just return. using afs_shuttingdown would have the side effect that we'd lose the ability to add any graceful behavior. Reviewed-on: http://gerrit.openafs.org/443 Reviewed-by: Derrick Brashear <shadow@dementia.org> Tested-by: Derrick Brashear <shadow@dementia.org>
This commit is contained in:
parent
cc7938e8ff
commit
3898524693
@ -45,6 +45,11 @@ osi_NetReceive(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec,
|
|||||||
|
|
||||||
for (i = 0; i < nvecs; i++)
|
for (i = 0; i < nvecs; i++)
|
||||||
iov[i] = dvec[i];
|
iov[i] = dvec[i];
|
||||||
|
|
||||||
|
if ((afs_termState == AFSOP_STOP_RXK_LISTENER) ||
|
||||||
|
(afs_termState == AFSOP_STOP_COMPLETE))
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (haveGlock)
|
if (haveGlock)
|
||||||
AFS_GUNLOCK();
|
AFS_GUNLOCK();
|
||||||
#if defined(KERNEL_FUNNEL)
|
#if defined(KERNEL_FUNNEL)
|
||||||
@ -151,8 +156,13 @@ osi_NetSend(osi_socket so, struct sockaddr_in *addr, struct iovec *dvec,
|
|||||||
|
|
||||||
addr->sin_len = sizeof(struct sockaddr_in);
|
addr->sin_len = sizeof(struct sockaddr_in);
|
||||||
|
|
||||||
|
if ((afs_termState == AFSOP_STOP_RXK_LISTENER) ||
|
||||||
|
(afs_termState == AFSOP_STOP_COMPLETE))
|
||||||
|
return -1;
|
||||||
|
|
||||||
if (haveGlock)
|
if (haveGlock)
|
||||||
AFS_GUNLOCK();
|
AFS_GUNLOCK();
|
||||||
|
|
||||||
#if defined(KERNEL_FUNNEL)
|
#if defined(KERNEL_FUNNEL)
|
||||||
thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL);
|
thread_funnel_switch(KERNEL_FUNNEL, NETWORK_FUNNEL);
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user