From: Johannes Sixt <j.sixt@viscovery.net>
To: "Shawn O. Pearce" <spearce@spearce.org>
Cc: git@vger.kernel.org
Subject: Re: [RFC PATCH v2 01/16] pkt-line: Add strbuf based functions
Date: Tue, 13 Oct 2009 09:29:22 +0200 [thread overview]
Message-ID: <4AD42C52.80205@viscovery.net> (raw)
In-Reply-To: <1255400715-10508-2-git-send-email-spearce@spearce.org>
Shawn O. Pearce schrieb:
> -int packet_read_line(int fd, char *buffer, unsigned size)
> +static int packet_length(unsigned *ret_len, const char *linelen)
> {
> int n;
> - unsigned len;
> - char linelen[4];
> -
> - safe_read(fd, linelen, 4);
> + unsigned len = 0;
>
> - len = 0;
> for (n = 0; n < 4; n++) {
> unsigned char c = linelen[n];
> len <<= 4;
> @@ -96,8 +116,20 @@ int packet_read_line(int fd, char *buffer, unsigned size)
> len += c - 'A' + 10;
> continue;
> }
> - die("protocol error: bad line length character");
> + return -1;
> }
> + *ret_len = len;
> + return 0;
> +}
len can be signed: Valid lengths fit into a signed int. Then you can
'return len;' on success and 'return -1;' on failure and don't need return
the result by reference. packet_read_line() ultimately converts it to int
anyway:
> +int packet_read_line(int fd, char *buffer, unsigned size)
> +{
> + unsigned len;
> + char linelen[4];
> +
> + safe_read(fd, linelen, 4);
> + if (packet_length(&len, linelen))
> + die("protocol error: bad line length character");
> if (!len)
> return 0;
> len -= 4;
> @@ -107,3 +139,28 @@ int packet_read_line(int fd, char *buffer, unsigned size)
> buffer[len] = 0;
> return len;
> }
-- Hannes
next prev parent reply other threads:[~2009-10-13 7:36 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2009-10-13 2:24 [RFC PATCH v2 00/16] Return of smart HTTP Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 01/16] pkt-line: Add strbuf based functions Shawn O. Pearce
2009-10-13 7:29 ` Johannes Sixt [this message]
2009-10-13 18:10 ` Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 02/16] pkt-line: Make packet_read_line easier to debug Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 03/16] fetch-pack: Use a strbuf to compose the want list Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 04/16] Move "get_ack()" back to fetch-pack Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 05/16] Add multi_ack_2 capability to fetch-pack/upload-pack Shawn O. Pearce
2009-10-13 21:35 ` Jakub Narebski
2009-10-13 21:36 ` Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 06/16] remote-curl: Refactor walker initialization Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 07/16] remote-helpers: Fetch more than one ref in a batch Shawn O. Pearce
2009-10-13 3:56 ` Daniel Barkalow
2009-10-13 18:05 ` Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 08/16] remote-helpers: Support custom transport options Shawn O. Pearce
2009-10-13 4:23 ` Daniel Barkalow
2009-10-13 18:45 ` Shawn O. Pearce
2009-10-13 20:39 ` Daniel Barkalow
2009-10-13 20:52 ` Shawn O. Pearce
2009-10-13 21:41 ` Daniel Barkalow
2009-10-13 21:51 ` Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 09/16] Move WebDAV HTTP push under remote-curl Shawn O. Pearce
2009-10-13 4:41 ` Mike Hommey
2009-10-13 18:04 ` Johannes Schindelin
2009-10-13 2:25 ` [RFC PATCH v2 10/16] Git-aware CGI to provide dumb HTTP transport Shawn O. Pearce
2009-10-13 10:56 ` Johannes Sixt
2009-10-13 2:25 ` [RFC PATCH v2 11/16] Add one shot RPC options to upload-pack, receive-pack Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 12/16] Smart fetch and push over HTTP: server side Shawn O. Pearce
2009-10-13 7:30 ` Johannes Sixt
2009-10-13 18:24 ` Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 13/16] Discover refs via smart HTTP server when available Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 14/16] Smart push over HTTP: client side Shawn O. Pearce
2009-10-13 11:02 ` Felipe Contreras
2009-10-13 2:25 ` [RFC PATCH v2 15/16] Smart fetch " Shawn O. Pearce
2009-10-13 2:25 ` [RFC PATCH v2 16/16] Smart HTTP fetch: gzip requests Shawn O. Pearce
2009-10-13 8:38 ` Junio C Hamano
2009-10-13 3:45 ` [RFC PATCH v2 00/16] Return of smart HTTP eduard stefan
2009-10-13 6:42 ` Junio C Hamano
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=4AD42C52.80205@viscovery.net \
--to=j.sixt@viscovery.net \
--cc=git@vger.kernel.org \
--cc=spearce@spearce.org \
/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 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 NNTP newsgroup(s).