DragonFly BSD
DragonFly commits List (threaded) for 2013-08
[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]

git: tcp: Allow socket/syncache inheritance between SO_REUSEPORT listen sockets


From: Sepherosa Ziehau <sephe@xxxxxxxxxxxxxxxxxxxxxxx>
Date: Thu, 1 Aug 2013 01:13:56 -0700 (PDT)

commit 02ad2f0b874fb0a45eb69750219f79f5e8982272
Author: Sepherosa Ziehau <sephe@dragonflybsd.org>
Date:   Wed Jul 31 16:31:02 2013 +0800

    tcp: Allow socket/syncache inheritance between SO_REUSEPORT listen sockets
    
    This is intend to address the drawback of the following SO_REUSEPORT tcp
    listen socket usage model:
    Multiple processses create their own listen socket w/ SO_REUSEPORT, if
    one of the process crashed, i.e. the listen socket is closed, then any
    syncache, pending sockets on the completion and incompletion queues
    are just dropped.
    
    Compared w/ multiple processes sharing the same tcp listen socket, this
    drawback could be unacceptable (e.g. when nginx reload configure).
    
    This commit addresses this drawback by allowing another tcp listen socket
    in the same local group, i.e. bound to the same listen port and address,
    to inherit the syncache and pending sockets of the to-be-closed tcp
    listen socket.  The tcp listen socket, which inherits the syncache and
    pending sockets, is the last tcp listen socket in the same local group.

Summary of changes:
 sys/kern/uipc_socket.c     | 67 ++++++++++++++++++++++++++++++++++++++++++++++
 sys/netinet/in_pcb.c       | 40 +++++++++++++++++++++++++++
 sys/netinet/in_pcb.h       |  2 ++
 sys/netinet/tcp_subr.c     | 39 ++++++++++++++++++++++++---
 sys/netinet/tcp_syncache.c |  4 +--
 sys/netinet/tcp_var.h      |  2 +-
 sys/sys/socketvar.h        |  1 +
 7 files changed, 149 insertions(+), 6 deletions(-)

http://gitweb.dragonflybsd.org/dragonfly.git/commitdiff/02ad2f0b874fb0a45eb69750219f79f5e8982272


-- 
DragonFly BSD source repository



[Date Prev][Date Next]  [Thread Prev][Thread Next]  [Date Index][Thread Index]