From: Shawn Pearce <spearce@spearce.org>
To: Duy Nguyen <pclouds@gmail.com>
Cc: Junio C Hamano <gitster@pobox.com>,
Stefan Beller <sbeller@google.com>,
Git Mailing List <git@vger.kernel.org>
Subject: Re: [RFC/PATCH 0/3] protocol v2
Date: Tue, 3 Mar 2015 20:27:33 -0800 [thread overview]
Message-ID: <CAJo=hJtgda4ATtPeLWbhgDPiTm9h-gzBkpknxsOdRddueUgTbw@mail.gmail.com> (raw)
In-Reply-To: <CACsJy8B_r_0nP9NyKFBnr9bXgwjx8dJkSVkHbZw+Mxin_YpZZw@mail.gmail.com>
On Tue, Mar 3, 2015 at 5:54 PM, Duy Nguyen <pclouds@gmail.com> wrote:
> On Wed, Mar 4, 2015 at 12:13 AM, Junio C Hamano <gitster@pobox.com> wrote:
>> My recollection is that the consensus from the last time we
>> discussed protocol revamping was to list one capability per packet
>> so that packet length limit does not matter, but you may want to
>> check with the list archive yourself.
>
> I couldn't find that consensus mail, but this one [1] is good enough
> evidence that we can hit packet length limit in capability line
> easily.
> With an escape hatch to allow maximum packet length up to uint_max, I
The symbolic ref thing was done badly. There isn't an escape hatch in
current v1 protocol sufficient to allow this but each ref should be
its own pkt-line, or should be a small batch of refs per pkt-line, or
the ref advertisement should be a data stream in a side-band-64k sort
of format inside the pkt-line framing.
At 64k per frame of side-band there is plenty of data to header ratio
that we don't need to escape to uint_max.
> Looks like one cap per pkt-line is winning..
Yes.
> [1] http://thread.gmane.org/gmane.comp.version-control.git/237929
Let me go on a different tangent a bit from the current protocol.
http://www.grpc.io/ was recently released and is built on the HTTP/2
standard. It uses protobuf as a proven extensibility mechanism.
Including a full C based grpc stack just to speak the Git wire
protocol is quite likely overkill, but I think the embedding of a
proven extensible format inside of a bi-directional framed streaming
system like HTTP/2 offers some good guidance.
Network protocol parsing is hard. Especially in languages like C where
buffer overflows are possible. Or where a client could trivially DoS a
server by sending a packet of size uint_max and the server naively
trying to malloc() that buffer. Defining the network protocol in an
IDL like protobuf 3 and being machine generated from stable well
maintained code has its advantages.
next prev parent reply other threads:[~2015-03-04 4:28 UTC|newest]
Thread overview: 80+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-02-24 3:12 [RFC/PATCH 0/3] protocol v2 Stefan Beller
2015-02-24 3:12 ` [PATCH 1/3] Document protocol capabilities extension Stefan Beller
2015-02-24 3:12 ` [PATCH 2/3] receive-pack: add advertisement of different protocol options Stefan Beller
2015-02-24 3:12 ` [PATCH 3/3] receive-pack: enable protocol v2 Stefan Beller
2015-02-24 4:02 ` [RFC/PATCH 0/3] " Duy Nguyen
2015-02-24 5:40 ` Stefan Beller
2015-02-24 6:15 ` Junio C Hamano
2015-02-24 23:37 ` Stefan Beller
2015-02-25 12:44 ` Duy Nguyen
2015-02-25 18:04 ` Junio C Hamano
2015-02-26 7:31 ` Stefan Beller
2015-02-26 10:15 ` Duy Nguyen
2015-02-26 20:08 ` Stefan Beller
[not found] ` <CACsJy8DOS_999ZgW7TqsH-dkrUFpjZf0TFQeFUt9s0bNhHY0Bw@mail.gmail.com>
2015-02-27 22:20 ` Stefan Beller
2015-02-26 20:13 ` Junio C Hamano
2015-02-27 1:26 ` Stefan Beller
2015-02-27 2:15 ` Stefan Beller
2015-02-27 23:05 ` Junio C Hamano
2015-02-27 23:44 ` Stefan Beller
2015-02-28 0:33 ` Junio C Hamano
2015-02-28 0:46 ` Stefan Beller
2015-02-28 1:01 ` [RFC/PATCH 0/5] protocol v2 for upload-pack Stefan Beller
2015-02-28 1:01 ` [RFC/PATCH 1/5] upload-pack: only accept capabilities on the first "want" line Stefan Beller
2015-02-28 1:01 ` [RFC/PATCH 2/5] upload-pack: support out of band client capability requests Stefan Beller
2015-02-28 7:47 ` Kyle J. McKay
2015-02-28 11:22 ` Duy Nguyen
2015-02-28 22:36 ` Kyle J. McKay
2015-03-01 0:11 ` Duy Nguyen
2015-02-28 11:36 ` Duy Nguyen
2015-02-28 1:01 ` [RFC/PATCH 3/5] connect.c: connect to a remote service with some flags Stefan Beller
2015-02-28 11:11 ` Torsten Bögershausen
2015-03-01 3:22 ` Junio C Hamano
2015-02-28 1:01 ` [RFC/PATCH 4/5] daemon.c: accept extra service arguments Stefan Beller
2015-03-01 3:39 ` Junio C Hamano
2015-02-28 1:01 ` [RFC/PATCH 5/5] WIP/Document the http protocol change Stefan Beller
2015-02-28 12:26 ` Duy Nguyen
2015-03-01 9:11 ` [RFC/PATCH 0/5] protocol v2 for upload-pack Johannes Sixt
2015-03-02 2:58 ` Junio C Hamano
2015-03-02 3:47 ` [RFC/PATCH 0/3] protocol v2 Junio C Hamano
2015-03-02 9:21 ` Duy Nguyen
2015-03-02 9:24 ` Duy Nguyen
2015-03-03 10:33 ` Duy Nguyen
2015-03-03 17:13 ` Junio C Hamano
2015-03-03 19:47 ` Junio C Hamano
2015-03-04 1:54 ` Duy Nguyen
2015-03-04 4:27 ` Shawn Pearce [this message]
2015-03-04 12:05 ` Duy Nguyen
2015-03-04 19:10 ` Shawn Pearce
2015-03-05 1:03 ` Stefan Beller
2015-03-05 16:03 ` Stefan Beller
2015-03-24 17:42 ` Stefan Beller
2015-03-24 18:00 ` Junio C Hamano
2015-03-06 23:38 ` [PATCH] protocol upload-pack-v2 Stefan Beller
2015-03-06 23:40 ` Stefan Beller
2015-03-06 23:55 ` Duy Nguyen
2015-03-07 0:00 ` Duy Nguyen
2015-03-07 0:28 ` Junio C Hamano
2015-03-07 4:28 ` Stefan Beller
2015-03-07 5:21 ` Duy Nguyen
2015-03-08 20:36 ` Junio C Hamano
2015-03-31 19:58 ` Junio C Hamano
2015-04-02 12:37 ` Duy Nguyen
2015-04-02 14:45 ` Junio C Hamano
2015-04-02 22:18 ` Martin Fick
2015-04-02 22:58 ` Junio C Hamano
2015-04-02 23:00 ` Stefan Beller
2015-04-02 23:14 ` Stefan Beller
2015-03-10 1:38 ` Duy Nguyen
2015-03-10 19:36 ` Kyle J. McKay
2015-02-28 0:07 ` [RFC/PATCH 0/3] protocol v2 Duy Nguyen
2015-02-28 0:26 ` Junio C Hamano
2015-03-01 8:41 ` Junio C Hamano
2015-03-01 11:32 ` Duy Nguyen
2015-03-01 19:56 ` Stefan Beller
2015-03-02 1:05 ` David Lang
2015-03-01 23:06 ` Junio C Hamano
2015-03-02 1:09 ` David Lang
2015-03-02 3:10 ` Junio C Hamano
2015-03-01 23:06 ` Philip Oakley
2015-03-02 9:32 ` Duy Nguyen
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to='CAJo=hJtgda4ATtPeLWbhgDPiTm9h-gzBkpknxsOdRddueUgTbw@mail.gmail.com' \
--to=spearce@spearce.org \
--cc=git@vger.kernel.org \
--cc=gitster@pobox.com \
--cc=pclouds@gmail.com \
--cc=sbeller@google.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.