• David Howells's avatar
    rxrpc: Fix exclusive connection handling · cc8feb8e
    David Howells authored
    "Exclusive connections" are meant to be used for a single client call and
    then scrapped.  The idea is to limit the use of the negotiated security
    context.  The current code, however, isn't doing this: it is instead
    restricting the socket to a single virtual connection and doing all the
    calls over that.
    
    This is changed such that the socket no longer maintains a special virtual
    connection over which it will do all the calls, but rather gets a new one
    each time a new exclusive call is made.
    
    Further, using a socket option for this is a poor choice.  It should be
    done on sendmsg with a control message marker instead so that calls can be
    marked exclusive individually.  To that end, add RXRPC_EXCLUSIVE_CALL
    which, if passed to sendmsg() as a control message element, will cause the
    call to be done on an single-use connection.
    
    The socket option (RXRPC_EXCLUSIVE_CONNECTION) still exists and, if set,
    will override any lack of RXRPC_EXCLUSIVE_CALL being specified so that
    programs using the setsockopt() will appear to work the same.
    Signed-off-by: default avatarDavid Howells <dhowells@redhat.com>
    cc8feb8e
conn_object.c 22.1 KB