mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-28 17:46:09 +00:00
transports: smart: abort receiving packets on end of stream
When trying to receive packets from the remote, we loop until either an error distinct to `GIT_EBUFS` occurs or until we successfully parsed the packet. This does not honor the case where we are looping over an already closed socket which has no more data, leaving us in an infinite loop if we got a bogus packet size or if the remote hang up. Fix the issue by returning `GIT_EEOF` when we cannot read data from the socket anymore.
This commit is contained in:
parent
61530c497d
commit
62494bf234
@ -222,8 +222,12 @@ static int recv_pkt(git_pkt **out, gitno_buffer *buf)
|
||||
if (error < 0 && error != GIT_EBUFS)
|
||||
return error;
|
||||
|
||||
if ((ret = gitno_recv(buf)) < 0)
|
||||
if ((ret = gitno_recv(buf)) < 0) {
|
||||
return ret;
|
||||
} else if (ret == 0) {
|
||||
giterr_set(GITERR_NET, "early EOF");
|
||||
return GIT_EEOF;
|
||||
}
|
||||
} while (error);
|
||||
|
||||
gitno_consume(buf, line_end);
|
||||
|
Loading…
Reference in New Issue
Block a user