2.2.8.1 SessionStatus Command Fields

SSTP 1.5 and SSTP 1.6 SessionStatus command fields with a single fanout device are defined as shown in the following table.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

CommandId

CommandLength

SessionId

...

StatusId

Reserved

DeviceURL (variable)

...

IdentityURL (variable)

...

SSTP 1.6 SessionStatus command fields with multiple fanout devices are defined as shown in the following table.


0


1


2


3


4


5


6


7


8


9

1
0


1


2


3


4


5


6


7


8


9

2
0


1


2


3


4


5


6


7


8


9

3
0


1

CommandId

CommandLength

SessionId

...

StatusId

Reserved

DeviceURL (variable)

...

IdentityURL (variable)

...

NumFanoutDeviceIndexes

FanoutDeviceIndexes (variable, optional)

CommandId (1 byte): The command identifier. This field MUST be set to 0x12.

CommandLength (2 bytes): The total length of the command, in bytes.

SessionId (4 bytes): The identifier for the SSTP session, as specified in section 3.1.1.3.

StatusId (1 byte): This field MUST be one of the values described in the following table indicating the cause of the status change.

Value

Mnemonic

Description

0x01

DNSLookupFailed

The DNS lookup of the relay server specified in the DeviceURL field failed.

0x02

HostNotReachable

A TCP connection (2) to the remote relay server specified in the DeviceURL field could not be established.

0x03

ConnectionClosed

An existing forwarding connection (1) to the remote relay specified in the DeviceURL field was lost.

0x04

QuotaWouldBeExceeded

The specified recipient no longer has space available to store messages for this session.

0x05

LockedOut

The specified recipient is no longer permitted to store messages for this session.

Reserved (1 byte): This field is reserved, and MUST be 0x00.

DeviceURL (variable): A variable length ASCII string terminated by 0x00 containing the device URL of the device affected by this command.

In SSTP 1.5, if the StatusId is 0x01, 0x02, or 0x03 this MUST be a relay URL and indicates that all fanout destinations on this relay server are no longer part of this session.

In SSTP 1.5, if the StatusId is one of 0x04 or 0x05 this MUST be a client device URL and indicates that the destination specified by the combination of this DeviceURL field and the IdentityURL field is no longer part of this session.

In SSTP 1.6, for optimization, a single SessionStatus command can specify multiple devices that have all undergone the same status change. Multiple devices are specified by the optional NumFanoutDeviceIndexes and FanoutDeviceIndexes fields. If only one fanout target has failed, the DeviceURL field MUST be a client device URL and indicates that the destination specified by the combination of this DeviceURL field and the IdentityURL field is no longer part of this session. In addition, NumFanoutDeviceIndexes MUST be set to 0x0000 and the FanoutDeviceIndexes field MUST be omitted.

In SSTP 1.6, if more than one fanout device has failed, both the DeviceURL and IdentityURL fields MUST be set to an empty string, and the NumFanoutDeviceIndexes and FanoutDeviceIndexes fields MUST be used to specify the devices.

IdentityURL (variable): A variable length ASCII string terminated by 0x00 containing the identity URL of a recipient.

In SSTP 1.5, if the StatusId is one of 0x01, 0x02, or 0x03 this MUST be set to an empty string.

In SSTP 1.5, if the StatusId is one of 0x04 or 0x05 this MUST NOT be an empty string.

In SSTP 1.6, for optimization, a single SessionStatus command can specify multiple devices that have all undergone the same status change. Multiple devices are specified by the optional NumFanoutDeviceIndexes and FanoutDeviceIndexes fields. If only one fanout target has failed, the IdentityURL field MUST NOT be an empty string. In addition, NumFanoutDeviceIndexes MUST be set to 0x0000 and the FanoutDeviceIndexes field MUST be omitted.

In SSTP 1.6, if more than one fanout device has failed, both the DeviceURL and IdentityURL fields MUST be set to the empty string, and the NumFanoutDeviceIndexes and FanoutDeviceIndexes fields MUST be used to specify the devices.

NumFanoutDeviceIndexes (2 bytes): The total number of fanout device indices in the list FanoutDeviceIndexes field. This is an optional field introduced in SSTP 1.6 SessionStatus messages. In SSTP 1.5, this field MUST NOT exist.

In SSTP 1.6, if there is only one fanout device on which to report status (as was the case with all SSTP 1.5 SessionStatus messages), the DeviceURL and IdentityURL fields MUST be used instead. In this case, the NumFanoutDeviceIndexes field MUST be set to 0x0000 and the FanoutDeviceIndexes field MUST NOT exist.

FanoutDeviceIndexes (variable, optional): A variable length list of encoded fanout device entries. This is an optional field introduced in SSTP 1.6 SessionStatus messages, for optimization, that allows a single SessionStatus command to specify the status of multiple fanout devices. In SSTP 1.5, this field MUST NOT exist.

If the field is present, the FanoutDeviceEntries list MUST contain exactly as many entries as indicated in the preceding NumFanoutDeviceEntries field.

The FanoutDeviceIndexes field is a zero-based index. A FanoutDeviceIndexes entry is a 2-byte unsigned integer that is used as an index to locate a fanout device entry in the original FanoutOpen command. An index MUST be less than the size of the fanout device entries in the associated FanoutOpen command and SHOULD NOT<9> be sent in redundant SessionStatus commands for the same associated FanoutOpen command.

If NumFanoutDeviceIndexes is set to 0x0000, this indicates that there is only one fanout device specified in this SessionStatus command. In this case, the IdentityURL field MUST be used instead, the DeviceURL field MUST be NULL, and the FanoutDeviceIndexes field MUST NOT exist.