]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/commit
- Fix ncp_poll() to not panic if the socket doesn't have any pending data.
authorjhb <jhb@FreeBSD.org>
Thu, 3 Aug 2006 15:31:52 +0000 (15:31 +0000)
committerjhb <jhb@FreeBSD.org>
Thu, 3 Aug 2006 15:31:52 +0000 (15:31 +0000)
commit0daea30185ec4572823e7ab6d4288889af965184
tree6f9469d0d9c7f2244ecf78fde771e50720c28770
parentd0aaec359fd46d2e4ee51f1079a060a0bd9f2b84
- Fix ncp_poll() to not panic if the socket doesn't have any pending data.
  We have to adjust curthread's state enough so that it appears to be
  in a poll(2) or select(2) call so that selrecord() will work and then
  teardown that state after calling sopoll().
- Fix some minor nits in nearby ncp_sock_rselect() and in the identical
  nbssn_rselect() function in the netsmb code:
  - Don't call nb_poll()/ncp_poll() now that ncp_poll() already fakes up
    poll(2) state since the rselect() functions already do that.  Just
    invoke sopoll() directly.
  - To make things slightly more intuitive, store the results of sopoll()
    in a new 'revents' variable rather than 'error' since that's what
    sopoll() actually returns.
  - If the requested timeout time has been exceeded by the time we get
    ready to block, then return EWOULDBLOCK rather than 0 to signal a
    timeout as this is what the calling code expects.

Tested by: Eric Christeson <eric.j.christeson AT gmail> (1)
MFC after: 1 week
sys/netncp/ncp_sock.c
sys/netsmb/smb_trantcp.c