Allow the buffer size for the IO pumps to be configurable in InvertedShellWrapper

Details

Description

InvertedShellWrapper uses by default a buffer of 512 bytes to copy the input/output/error streams from the shell to the socket. For some applications, this is way too low, as for example, copying 1MB from the process output to the socket is going to require in the 2048 loop iterations in the IO pump thread.

For example, in our tests, switching the buffer size from 512 bytes to 32kBytes, on the transmission of 830Mb leads to an improvement from 1m30s for the 512b buffer to 1m15s for the 32k buffer, saving of 1/6th of the overall transmission time.

InvertedShellWrapper uses by default a buffer of 512 bytes to copy the input/output/error streams from the shell to the socket. For some applications, this is way too low, as for example, copying 1MB from the process output to the socket is going to require 2048 loop iterations in the IO pump thread, and introduce a 2s of latency because of the 1ms sleep at the end of each loop iteration.

Instead the buffer size should be configurable by the command factory.

InvertedShellWrapper uses by default a buffer of 512 bytes to copy the input/output/error streams from the shell to the socket. For some applications, this is way too low, as for example, copying 1MB from the process output to the socket is going to require in the 2048 loop iterations in the IO pump thread.

For example, in our tests, switching the buffer size from 512 bytes to 32kBytes, on the transmission of 830Mb leads to an improvement from 1m30s for the 512b buffer to 1m15s for the 32k buffer, saving of 1/6th of the overall transmission time.