3.3.1.1.1 Call Establishment

The following figure shows the state machine when the 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.

Server call establishment

Figure 5: Server call establishment

The server state machine for each connection has the following states as represented in the CurrentState variable for the particular connection:

State Name

Description

Server_Call_Disconnected

This is the initial state of the server state machine for any connection. In this state, the server waits for a new HTTPS connection event to come in from the lower HTTPS layer. On receipt of this event, the server changes CurrentState to Server_Connect_Request_Pending.

Server_Connect_Request_Pending

In this state, the server waits for the SSTP_MSG_CALL_CONNECT_REQUEST message from the SSTP client. On receipt of this message and when the message is found to be acceptable, the server sends an SSTP_MSG_CALL_CONNECT_ACK to the SSTP client, informs the higher layer (that is, PPP) to start the authentication phase, and then changes CurrentState to Server_Call_Connected_Pending. An SSTP_MSG_CALL_CONNECT_REQUEST message from the SSTP client is considered to be unacceptable if either the Protocol ID field is not SSTP_ENCAPSULATED_PROTOCOL_PPP or the message contains a Status Info Attribute (section 2.2.8) and the status field is set to a nonzero value.

Server_Call_Connected_Pending

In this state, the server waits for the SSTP_MSG_CALL_CONNECTED message from the SSTP client and continues to send and receive the higher layer payload (that is, PPP control frames). On receipt of the SSTP_MSG_CALL_CONNECTED message, the server validates the crypto binding attribute. If the attribute is valid, the server changes CurrentState to Server_Call_Connected.

Server_Call_Connected

This state refers to the successful establishment of an SSTP connection from a given SSTP client. In this state, the server continues to send and receive higher layer payload (that is, PPP control and data frames), in addition to sending periodic SSTP_MSG_ECHO_REQUEST messages for the particular SSTP connection.

The preceding description covers the state transitions for a successful SSTP connection. Failure transitions are covered in the state machine diagram in this section and are also covered in sections 3.3.4 and 3.3.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.3.4, 3.3.5, 3.1.4 and 3.1.5.