cvs commit: src/sys/kern uipc_socket.c

Robert Watson rwatson at FreeBSD.org
Fri Feb 25 17:52:13 GMT 2005


rwatson     2005-02-25 17:52:12 UTC

  FreeBSD src repository

  Modified files:        (Branch: RELENG_5)
    sys/kern             uipc_socket.c 
  Log:
  Merge uipc_socket.c:1.227 from HEAD to RELENG_5:
  
    date: 2005/02/18 00:52:17;  author: rwatson;  state: Exp;  lines: +4 -6
    In solisten(), unconditionally set the SO_ACCEPTCONN option in
    so->so_options when solisten() will succeed, rather than setting it
    conditionally based on there not being queued sockets in the completed
    socket queue.  Otherwise, if the protocol exposes new sockets via the
    completed queue before solisten() completes, the listen() system call
    will succeed, but the socket and protocol state will be out of sync.
    For TCP, this didn't happen in practice, as the TCP code will panic if
    a new connection comes in after the tcpcb has been transitioned to a
    listening state but the socket doesn't have SO_ACCEPTCONN set.
  
    This is historical behavior resulting from bitrot since 4.3BSD, in which
    that line of code was associated with the conditional NULL'ing of the
    connection queue pointers (one-time initialization to be performed
    during the transition to a listening socket), which are now initialized
    separately.
  
    Discussed with: fenner, gnn
  
  Revision    Changes    Path
  1.208.2.14  +4 -6      src/sys/kern/uipc_socket.c


More information about the cvs-src mailing list