• Show log

    Commit

  • Hash : 294c6f29
    Author : Carlos Martín Nieto
    Date : 2014-08-16T22:12:13

    http: make sure we can consume the data we request
    
    The recv buffer (parse_buffer) and the buffer have independent sizes and
    offsets. We try to fill in parse_buffer as much as possible before
    passing it to the http parser. This is fine most of the time, but fails
    us when the buffer is almost full.
    
    In those situations, parse_buffer can have more data than we would be
    able to put into the buffer (which may be getting full if we're towards
    the end of a data sideband packet).
    
    To work around this, we check if the space we have left on our buffer is
    smaller than what could come from the network. If this happens, we make
    parse_buffer think that it has as much space left as our buffer, so it
    won't try to retrieve more data than we can deal with.
    
    As the start of the data may no longer be at the start of the buffer, we
    need to keep track of where it really starts (data_offset) and use that
    in our calculations for the real size of the data we received from the
    network.
    
    This fixes #2518.