3.2.1.1.1 Call Establishment

The following figure shows the state machine when a client establishes the outgoing SSTP tunnel.

Note The following figure refers to the Call Disconnect and Call Abort state machines described in section 3.1.1.1.

Client call establishment

Figure 4: Client call establishment

The client state machine has the following states as represented in the CurrentState variable:

State Name

Description

Client_Call_Disconnected

This is the initial state of the client state machine. In this state, the client waits for the establish SSTP tunnel event from the higher layer. On receiving this event, the client sends HTTPS connection to the SSTP server. On successful completion of the HTTPS connection, the client sends the SSTP_MSG_CALL_CONNECT_REQUEST message and the value of CurrentState is changed to Client_Connect_Request_Sent.

Client_Connect_Request_Sent

In this state, the client waits for the SSTP_MSG_CALL_CONNECT_ACK message from the SSTP server. On receipt of this message, the client informs its higher layer (that is, PPP) to start the authentication and the value of CurrentState is changed to Client_Connect_Ack_Received.

Client_Connect_Ack_Received

In this state, the client waits for an Inner authentication completion event (section 3.2.7.1). On receipt of this event from the higher layer regarding authentication completion, it sends the SSTP_MSG_CALL_CONNECTED message and the value of CurrentState is changed to Client_Call_Connected.

Client_Call_Connected

This state refers to successful establishment of an SSTP client connection. In this state, the SSTP client continues to send and receive higher layer control and data payload, in addition to sending periodic SSTP_MSG_ECHO_REQUEST messages.

The preceding description covers the state transitions for a successful SSTP connection. Failure transitions are covered in the state machine diagram earlier in this section and are also covered in sections 3.2.4 and 3.2.5. The additional states for the Call Abort and Call Disconnect transitions are defined in section 3.1.1.1. The higher level events and messages are explained in sections 3.2.4, 3.2.5, 3.1.4 and 3.1.5.