mirror of
https://github.com/go-gitea/gitea.git
synced 2024-10-19 06:43:41 -04:00
32 lines
1.3 KiB
Go
32 lines
1.3 KiB
Go
|
// Package sideband implements a sideband mutiplex/demultiplexer
|
||
|
package sideband
|
||
|
|
||
|
// If 'side-band' or 'side-band-64k' capabilities have been specified by
|
||
|
// the client, the server will send the packfile data multiplexed.
|
||
|
//
|
||
|
// Either mode indicates that the packfile data will be streamed broken
|
||
|
// up into packets of up to either 1000 bytes in the case of 'side_band',
|
||
|
// or 65520 bytes in the case of 'side_band_64k'. Each packet is made up
|
||
|
// of a leading 4-byte pkt-line length of how much data is in the packet,
|
||
|
// followed by a 1-byte stream code, followed by the actual data.
|
||
|
//
|
||
|
// The stream code can be one of:
|
||
|
//
|
||
|
// 1 - pack data
|
||
|
// 2 - progress messages
|
||
|
// 3 - fatal error message just before stream aborts
|
||
|
//
|
||
|
// The "side-band-64k" capability came about as a way for newer clients
|
||
|
// that can handle much larger packets to request packets that are
|
||
|
// actually crammed nearly full, while maintaining backward compatibility
|
||
|
// for the older clients.
|
||
|
//
|
||
|
// Further, with side-band and its up to 1000-byte messages, it's actually
|
||
|
// 999 bytes of payload and 1 byte for the stream code. With side-band-64k,
|
||
|
// same deal, you have up to 65519 bytes of data and 1 byte for the stream
|
||
|
// code.
|
||
|
//
|
||
|
// The client MUST send only maximum of one of "side-band" and "side-
|
||
|
// band-64k". Server MUST diagnose it as an error if client requests
|
||
|
// both.
|