3.2.5.3.2 Receiving an SSTP_MSG_CALL_CONNECT_ACK Message

If CurrentState is set to Client_Connect_Request_Sent:

  1. The client MUST verify the following:

    • The Crypto Binding Request Attribute (section 2.2.6) is present.

    • At least one hash protocol is selected by the server in the Hash Protocol Bitmask field.

    • At least one of the hash protocols in the Hash Protocol Bitmask field is a hash protocol supported by the client (as specified in the ClientHashProtocolSupported state variable described in section 3.2.1). If more than one hash protocol is supported, a stronger one is chosen (see section 2.2.10). The hash protocol chosen for computing the Crypto Binding attribute value is stored in the ClientHashProtocolChosen state variable (described in section 3.2.1) and is referenced when the client generates the Crypto Binding attribute (section 2.2.7) while sending an SSTP_MSG_CALL_CONNECTED message.

  2. If any of the previous conditions are false:

    1. Change CurrentState to Call_Abort_In_Progress_1.

    2. Send an SSTP_MSG_CALL_ABORT (section 2.2.13) message.

    3. Start the TIMER_VAL_ABORT_STATE_TIMER_1 (section 3.1.2.1) timer).

    4. Change CurrentState to Call_Abort_Pending.

  3. If all of the conditions are true (the message is valid), the client MUST:

    1. Trigger PPP to start PPP state machine.

    2. Start relaying PPP control frames to and from the server.

    3. Store the nonce received from the SSTP_MSG_CALL_CONNECT_ACK message in the ClientNonce state variable (described in 3.2.1).

      See section 3.1.5.1 for information about invalid message processing.

  4. Start the negotiation timer.

  5. Change CurrentState to Client_Connect_Ack_Received.

Else if CurrentState is Call_Abort_Timeout_Pending, Call_Abort_Pending, Call_Disconnect_Ack_Pending, or Call_Disconnect_Timeout_Pending:

  • Ignore the message.

Else if CurrentState has any other value:

  1. Change CurrentState to Call_Abort_In_Progress_1.

  2. Send an SSTP_MSG_CALL_ABORT (section 2.2.13) message.

  3. Start the TIMER_VAL_ABORT_STATE_TIMER_1 (section 3.1.2.1) timer.

  4. Update CurrentState to Call_Abort_Pending.