• Alex Elder's avatar
    libceph: don't touch con state in con_close_socket() · 456ea468
    Alex Elder authored
    In con_close_socket(), a connection's SOCK_CLOSED flag gets set and
    then cleared while its shutdown method is called and its reference
    gets dropped.
    
    Previously, that flag got set only if it had not already been set,
    so setting it in con_close_socket() might have prevented additional
    processing being done on a socket being shut down.  We no longer set
    SOCK_CLOSED in the socket event routine conditionally, so setting
    that bit here no longer provides whatever benefit it might have
    provided before.
    
    A race condition could still leave the SOCK_CLOSED bit set even
    after we've issued the call to con_close_socket(), so we still clear
    that bit after shutting the socket down.  Add a comment explaining
    the reason for this.
    Signed-off-by: default avatarAlex Elder <elder@inktank.com>
    Reviewed-by: default avatarSage Weil <sage@inktank.com>
    456ea468
messenger.c 66.7 KB