• M
    Implement read pipeline support in libssl · 94777c9c
    Matt Caswell 提交于
    Read pipelining is controlled in a slightly different way than with write
    pipelining. While reading we are constrained by the number of records that
    the peer (and the network) can provide to us in one go. The more records
    we can get in one go the more opportunity we have to parallelise the
    processing.
    
    There are two parameters that affect this:
    * The number of pipelines that we are willing to process in one go. This is
    controlled by max_pipelines (as for write pipelining)
    * The size of our read buffer. A subsequent commit will provide an API for
    adjusting the size of the buffer.
    
    Another requirement for this to work is that "read_ahead" must be set. The
    read_ahead parameter will attempt to read as much data into our read buffer
    as the network can provide. Without this set, data is read into the read
    buffer on demand. Setting the max_pipelines parameter to a value greater
    than 1 will automatically also turn read_ahead on.
    
    Finally, the read pipelining as currently implemented will only parallelise
    the processing of application data records. This would only make a
    difference for renegotiation so is unlikely to have a significant impact.
    Reviewed-by: NTim Hudson <tjh@openssl.org>
    94777c9c
ssl3_record.c 59.6 KB