3.2.4.3 Responding to Insufficient Output Buffer Space

When the server determines that there is not enough space in the ROP output buffer, as specified in section 2.2.1, for the remaining ROP responses, it MUST NOT process the remaining ROPs. The server responds in one of the following ways.

  • If the ROP output buffer can be resized to accommodate the remaining ROPs, then the server MUST send a RopBufferTooSmall ROP response (section 2.2.15.1). In this case, the client can resubmit the ROP requests in either a new EcDoRpcExt2 method call with the pcbOut parameter set to an appropriate value, as specified in [MS-OXCRPC] section 3.1.4.2, or a new Execute request type with the MaxRopOut field set to an appropriate value,<21> as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.1. For details about how the client processes a RopBufferTooSmall ROP response, see section 3.1.5.1.2.

  • If one of the ROP responses will not fit in the ROP output buffer when either the pcbOut parameter of the EcDoRpcExt2 response, as specified in [MS-OXCRPC] section 3.1.4.2, or the RopBufferSize field of the Execute request type success response body, as specified in [MS-OXCMAPIHTTP] section 2.2.4.2.2, is set to the maximum value, then the server SHOULD<22> fail the EcDoRpcExt2 method with a return value of 0x0000047D or fail the Execute request type with a value of 0x0000047D in the StatusCode field.

Some ROP response buffers are dynamically sized based on the amount of available space in the ROP output buffer. If the ROP output buffer is not large enough for the minimum size of a dynamically sized ROP response buffer followed by subsequent ROP response buffers, then the server sends the RopBufferTooSmall ROP.