• J. Bruce Fields's avatar
    rpc: keep backchannel xprt as long as server connection · 99de8ea9
    J. Bruce Fields authored
    Multiple backchannels can share the same tcp connection; from rfc 5661 section
    2.10.3.1:
    
    	A connection's association with a session is not exclusive.  A
    	connection associated with the channel(s) of one session may be
    	simultaneously associated with the channel(s) of other sessions
    	including sessions associated with other client IDs.
    
    However, multiple backchannels share a connection, they must all share
    the same xid stream (hence the same rpc_xprt); the only way we have to
    match replies with calls at the rpc layer is using the xid.
    
    So, keep the rpc_xprt around as long as the connection lasts, in case
    we're asked to use the connection as a backchannel again.
    
    Requests to create new backchannel clients over a given server
    connection should results in creating new clients that reuse the
    existing rpc_xprt.
    
    But to start, just reject attempts to associate multiple rpc_xprt's with
    the same underlying bc_xprt.
    Signed-off-by: default avatarJ. Bruce Fields <bfields@redhat.com>
    99de8ea9
svc_xprt.c 33.3 KB