pkt-line: memorize sideband fragment in reader
commit64220dc5f7450d8eca471fa484965b1dcddc2827
authorJiang Xin <zhiyou.jx@alibaba-inc.com>
Sun, 17 Dec 2023 14:41:37 +0000 (17 22:41 +0800)
committerJunio C Hamano <gitster@pobox.com>
Mon, 18 Dec 2023 21:24:37 +0000 (18 13:24 -0800)
tree2b8c592b39a440f65f6ccc9cd44f00573cd61478
parenteaa82f8e983199080369c44869ceac1e403f81fc
pkt-line: memorize sideband fragment in reader

When we turn on the "use_sideband" field of the packet_reader,
"packet_reader_read()" will call the function "demultiplex_sideband()"
to parse and consume sideband messages. Sideband fragment which does not
end with "\r" or "\n" will be saved in the sixth parameter "scratch"
and it can be reused and be concatenated when parsing another sideband
message.

In "packet_reader_read()" function, the local variable "scratch" can
only be reused by subsequent sideband messages. But if there is a
payload message between two sideband fragments, the first fragment
which is saved in the local variable "scratch" will be lost.

To solve this problem, we can add a new field "scratch" in
packet_reader to memorize the sideband fragment across different calls
of "packet_reader_read()".

Signed-off-by: Jiang Xin <zhiyou.jx@alibaba-inc.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
pkt-line.c
pkt-line.h
t/t0070-fundamental.sh