• Show log

    Commit

  • Hash : 61530c49
    Author : Patrick Steinhardt
    Date : 2016-11-01T16:56:07

    transports: smart: abort ref announcement on early end of stream
    
    When reading a server's reference announcements via the smart
    protocol, we expect the server to send multiple flushes before
    the protocol is finished. If we fail to receive new data from the
    socket, we will only return an end of stream error if we have not
    seen any flush yet.
    
    This logic is flawed in that we may run into an infinite loop
    when receiving a server's reference announcement with a bogus
    flush packet. E.g. assume the last flushing package is changed to
    not be '0000' but instead any other value. In this case, we will
    still await one more flush package and ignore the fact that we
    are not receiving any data from the socket, causing an infinite
    loop.
    
    Fix the issue by always returning `GIT_EEOF` if the socket
    indicates an end of stream.