Gleb Smirnoff 8d40bada3e Fix a degenerate case when soisdisconnected() would call soisconnected().
This happens when closing a socket with upcall, and trace is: soclose()->
... protocol ... -> soisdisconnected() -> socantrcvmore_locked() ->
sowakeup() -> soisconnected().

Right now this case is innocent for two reasons.  First, soisconnected()
doesn't clear SS_ISDISCONNECTED flag.  Second, the mutex to lock the
socket is the socket receive buffer mutex, and sodisconnected() first
disables the receive buffer. But in future code, the mutex to lock
socket is different to buffer mutex, and we would get undesired mutex
recursion.

The fix is to check SS_ISDISCONNECTED flag before calling upcall.
2017-06-08 06:16:47 +00:00
..
2017-05-23 09:29:05 +00:00
2016-11-08 23:59:41 +00:00
2017-05-18 18:24:11 +00:00
2017-02-12 09:49:44 +00:00
2017-01-25 20:22:32 +00:00
2017-05-23 16:59:24 +00:00
2017-02-14 13:54:05 +00:00
2017-03-14 22:02:02 +00:00
2017-03-19 00:51:12 +00:00
2016-11-08 23:59:41 +00:00
2017-02-07 16:01:07 +00:00
2017-05-16 23:31:52 +00:00
2017-01-14 04:16:13 +00:00
2017-05-23 09:30:42 +00:00
2017-05-23 09:30:42 +00:00
2017-05-23 09:29:05 +00:00
2017-05-23 09:29:05 +00:00
2017-02-13 09:04:38 +00:00