3.2.2.4.2 Sending a PDU

The sending a PDU event is valid only in the virtual connection opened state. In any other state an implementation of this protocol MUST treat this as an error and return an implementation-specific error to higher layers.

When a higher-level protocol requests that an implementation of this protocol send a PDU to the server, the implementation of this protocol MUST copy the PDU as a BLOB in the message body of the default RPC IN channel request as specified in section 2.1.2.1.7. If an implementation of this protocol encounters an error while sending the data, it MUST do the following:

  • Indicate to a higher layer in an implementation-specific way that the operation failed.

    Windows implementations of this protocol will return an error to the Windows implementation of the Remote Procedure Call Protocol Extensions, as specified in [MS-RPCE], to indicate the send PDU operation failed.

  • Treat the connection as closed.

  • Request the HTTP protocol stack to close all IN channels and OUT channels for this virtual connection.

If the channel lifetime sent protocol variable for the default IN channel approaches the channel lifetime (as specified later in this paragraph), the implementation of this protocol MUST initiate channel recycling as defined in this section. An implementation MAY define when the number of bytes sent is approaching the channel lifetime in an implementation-specific way, but it SHOULD define it in such a way as to balance between two conflicting objectives: to open the successor IN channel early enough that it is fully opened before the predecessor channel has expired and yet use as much of the predecessor channel as it can.<32>

For more information on the protocol sequence for recycling an IN channel, see sections 3.2.1.5.3.2 and 3.2.1.5.3.3.