• Poul-Henning Kamp's avatar
    Disable SO_LINGER when we time out a connection due to sess_timeout, · e9a93108
    Poul-Henning Kamp authored
    so that we do not RST connections that have still not transmitted their
    data.
    
    Since we were able to get the writev(2) to detach the socket, we should
    not end up sleeping in the close(2) either.
    
    We still RST the socket for all error conditions.
    
    Ideally I would still like to RST connections that have no outstanding
    data after their sess_timeout, in order to avoid the 2*RTT+misc
    timeouts delays associated with loosing a TCP socket for a client
    that have gone to meet some other IP#.
    
    In particular with load-balancers, this allows the load balancer to
    declare the session dead right away, and reuse it for something more
    productive.
    
    Unfortunately, this lacks OS support in all presently released
    OS'es: you cannot ask if a socket is done transmitting what you
    asked it to.
    
    FreeBSD-8.0 will have experimental support for this (FIONWRITE)
    and I will revisit it in that context.
    
    
    
    
    git-svn-id: http://www.varnish-cache.org/svn/trunk/varnish-cache@4183 d4fa192b-c00b-0410-8231-f00ffab90ce4
    e9a93108
cache_waiter_kqueue.c 5.63 KB