3.3.3 Server Details
The following diagram illustrates the state machine for an RPC connection. The transitions in the following diagram represents received PDUs.
Figure 20: State machine for an RPC connection
State |
Description |
---|---|
ESTABLISHED |
The server has accepted an incoming transport connection. |
Wait for SECURE_ALTER_CONTEXT |
The server has received a SECURE_BIND_PDU and replied with SECURE_BIND_ACK_PDU. It is ready to receive the SECURE_ALTER_CONTEXT PDUs. On receiving, the server sends back a SECURE_ALTER_CONTEXT_PDU_RESP PDU to the client. |
CONTEXT_NEGOTIATED |
The server received the last SECURE_ALTER_CONTEXT PDU and replied with the last SECURE_ALTER_CONTEXT PDU response. The server is ready to start receiving REQUEST PDUs or ALTER_CONTEXT PDUs (secure or unsecure) from the client. |
Negotiating Security |
The server has received a SECURE_ALTER_CONTEXT from the client and replied with a SECURE_ALTER_CONTEXT_RESP. |
RECV_PDU |
The server has received a request PDU. |
DISPATCH |
The server is ready to send the response to the client. |
Notes on this state machine:
When a state does not show an error transition, these extensions handle errors from this state by closing the connection or sending a bind_nak/fault PDU, as specified in sections 3.3.1.5.2, 3.3.1.5.6, and 3.3.3.5.7.
When concurrent multiplexing is used on a connection, as soon as an independent logical thread of execution makes a transition from RECV_PDU state to DISPATCH, another independent logical thread of execution can make the transition from CONTEXT_NEGOTIATED to RECV_PDU. Only one logical thread of execution is allowed to reside in the RECV_PDU state, but multiple logical threads of execution can be in the DISPATCH state. A client MUST NOT send any request PDU for request N+1 before it sends all request PDUs for request N.
If concurrent multiplexing on a connection is not enabled, a client MUST NOT send any request PDU for request N+1 before it receives all the response PDUs for request N.