git@vger.kernel.org mailing list mirror (one of many)
 help / color / mirror / code / Atom feed
* surprising value of LARGE_PACKET_MAX
@ 2021-11-04 18:59 Joey Hess
  2021-11-04 20:12 ` Matheus Tavares
  0 siblings, 1 reply; 3+ messages in thread
From: Joey Hess @ 2021-11-04 18:59 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 933 bytes --]

I implemented a git-filter-server using the long-running process
protocol, and was surprised to discover in testing that git rejected
a maximally sized pkt-line starting with "ffff" as having an invalid
size.

The docs don't say what the maximum size is, so I assumed I could make
it as large as the length header allows, which I think is a natural
conclusion to draw from the documentation. But looking in git's source,
fff0 is the maximum:

#define LARGE_PACKET_MAX 65520
#define LARGE_PACKET_DATA_MAX (LARGE_PACKET_MAX - 4)

Which dates back to commit d47f3db75c58139cdcbca5cc63b17bf5db293b6a in
2006, which does not give a rationalle for the slightly small
size. Whatever the reason, it seems likely that changing that would be
likely to break interoperability with older versions of git.

Perhaps the best thing to do would be to document it in
Documentation/technical/protocol-common.txt

-- 
see shy jo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: surprising value of LARGE_PACKET_MAX
  2021-11-04 18:59 surprising value of LARGE_PACKET_MAX Joey Hess
@ 2021-11-04 20:12 ` Matheus Tavares
  2021-11-05 14:57   ` Joey Hess
  0 siblings, 1 reply; 3+ messages in thread
From: Matheus Tavares @ 2021-11-04 20:12 UTC (permalink / raw)
  To: Joey Hess; +Cc: git

On Thu, Nov 4, 2021 at 4:08 PM Joey Hess <id@joeyh.name> wrote:
>
> The docs don't say what the maximum size is, so I assumed I could make
> it as large as the length header allows, which I think is a natural
> conclusion to draw from the documentation. But looking in git's source,
> fff0 is the maximum:
>
> #define LARGE_PACKET_MAX 65520
> #define LARGE_PACKET_DATA_MAX (LARGE_PACKET_MAX - 4)
[...]
> Perhaps the best thing to do would be to document it in
> Documentation/technical/protocol-common.txt

Could it be that you consulted an older version of this file? The
current [1] version of the doc says:

"The maximum length of a pkt-line's data component is 65516 bytes.
Implementations MUST NOT send pkt-line whose length exceeds 65520
(65516 bytes of payload + 4 bytes of length data)."

[1]: https://github.com/git/git/blob/master/Documentation/technical/protocol-common.txt

^ permalink raw reply	[flat|nested] 3+ messages in thread

* Re: surprising value of LARGE_PACKET_MAX
  2021-11-04 20:12 ` Matheus Tavares
@ 2021-11-05 14:57   ` Joey Hess
  0 siblings, 0 replies; 3+ messages in thread
From: Joey Hess @ 2021-11-05 14:57 UTC (permalink / raw)
  To: Matheus Tavares; +Cc: git

[-- Attachment #1: Type: text/plain, Size: 578 bytes --]

Matheus Tavares wrote:
> Could it be that you consulted an older version of this file? The
> current [1] version of the doc says:
> 
> "The maximum length of a pkt-line's data component is 65516 bytes.
> Implementations MUST NOT send pkt-line whose length exceeds 65520
> (65516 bytes of payload + 4 bytes of length data)."

I'm sure I did read the current version, so I think I must have glanced
at 65516 and seen 65535. I don't see FFFF in decimal very often.

I think FFF0 would have stood out better to me, but still the current
docs are ok.

-- 
see shy jo

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2021-11-05 14:57 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2021-11-04 18:59 surprising value of LARGE_PACKET_MAX Joey Hess
2021-11-04 20:12 ` Matheus Tavares
2021-11-05 14:57   ` Joey Hess

Code repositories for project(s) associated with this public inbox

	https://80x24.org/mirrors/git.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).