Export (0) Print
Expand All

2.2.7.10 FEATUREEXTACK

Token Stream Name:

 FEATUREEXTACK

Token Stream Function:

Used to send an optional acknowledge message to the client for features defined in FeatureExt. The token stream is sent only along with the LOGINACK in a Login Response message.

Token Stream Comments:

  • The token value is 0xAE.

Token Stream-Specific Rules:

 TokenType            =   BYTE
  
 FeatureId            =   BYTE
 FeatureAckDataLen    =   DWORD
 FeatureAckData       =   *BYTE
  
 TERMINATOR           =   %xFF       ; signal of end of feature ack data
  
 FeatureAckOpt        =   (FeatureId
                          FeatureAckDataLen
                          FeatureAckData)
                          /
                          TERMINATOR

Token Stream Definition:

 FEATUREEXTACK    =   TokenType
                      1*FeatureAckOpt

Token Stream Parameter Details

 Parameter

 Description

TokenType

FEATUREEXTACK_TOKEN

FeatureId

The unique identifier number of a feature. Each feature MUST use the same ID number here as in FeatureExt. If the client did not send a request for a specific feature but the FeatureId is returned, the client MUST consider it as a TDS Protocol error and MUST terminate the connection.

Each feature defines its own logic if it wants to use FeatureAckOpt to send information back to the client during the login response. Known FeatureId is described in the table below.

FeatureAckDataLen

The length of FeatureAckData, in bytes.

FeatureAckData

Ack data of specific feature. Each feature SHOULD define its own data format here if this token is chosen to acknowledge the feature.

The following table describes the FeatureExtAck feature option and description.

FeatureId

FeatureExtData Description

%0x00

Reserved.

%0x01

(SESSIONRECOVERY)

Session Recovery feature. Content is defined as follows:

 InitSessionStateData     =   SessionStateDataSet
 FeatureAckData           =   InitSessionStateData

SessionStateDataSet is described in section 2.2.7.20. The length of SessionStateDataSet is specified by the corresponding FeatureAckDataLen.

On a recovery connection, the client sends a login request with SessionRecoveryDataToBe. The server MUST set the session state as requested by the client. If the server cannot do so, the server MUST fail the login request and terminate the connection.

%0x02

(FEDAUTH)<40>

Whenever a login response stream is sent for a TDS connection whose login request included a FEDAUTH FeatureExt, the server login response message stream MUST include a FEATUREEXTACK token, and the FEATUREEXTACK token stream MUST include the FEDAUTH FeatureId. The format is described below based on the bFedAuthLibrary that is used in FEDAUTH FeatureExt.

When the bFedAuthLibrary is Live ID Compact Token, the format is as follows:

 Nonce                 = 32BYTE
 Signature             = 32BYTE
  
 FeatureAckData        = Nonce
                         Signature

Nonce: The client-specified nonce in PRELOGIN.

Signature: The HMAC-SHA-256 [RFC6234] of the client-specified nonce, using the session key retrieved from the federated authentication context as the shared secret.

When the bFedAuthLibrary is Security Token, the format is as follows:

 Nonce                 = 32BYTE
  
 FeatureAckData        = [Nonce]

Nonce: The client-specified nonce in PRELOGIN. This field MUST be present if the client’s PRELOGIN message included a NONCE field. Otherwise, this field MUST NOT be present.

%0x05

(GLOBALTRANSACTIONS)<41>

Whenever a login response stream is sent for a TDS connection whose login request included a GLOBALTRANSACTIONS FeatureExt, the server login response message stream can optionally include a FEATUREEXTACK token by including the GLOBALTRANSACTIONS FeatureId in the FEATUREEXTACK token stream. The corresponding FeatureAckData MUST then include a flag that indicates whether the server supports Global Transactions. The FeatureAckData format is as follows:

 IsEnabled             = BYTE
  
 FeatureAckData        = IsEnabled

IsEnabled: Specifies whether the server supports Global Transactions. The values of this field are as follows:

  • 0 = The server does not support Global Transactions.

  • 1 = The server supports Global Transactions.

%xFF

(TERMINATOR)

This is the last option in FeatureExtAck.

Show:
© 2016 Microsoft