Download raw body.
use got_pkt_readlen in a few more places
On Mon, Apr 22, 2024 at 05:53:02PM +0200, Tobias Heider wrote:
> -----------------------------------------------
> commit 21679dc5afe28d00d3188bb529f3cefffdb06b64 (main)
> from: Tobias Heider <me@tobhe.de>
> date: Mon Apr 22 15:50:40 2024 UTC
>
> Use got_pkt_readlen() to parse pkt-lens.
>
> M libexec/got-fetch-http/Makefile | 1+ 1-
> M libexec/got-fetch-http/got-fetch-http.c | 27+ 25-
>
> 2 files changed, 28 insertions(+), 26 deletions(-)
ok stsp
>
> diff 3bafd8d444040e4f41be33562f63e5d2eb201447 21679dc5afe28d00d3188bb529f3cefffdb06b64
> commit - 3bafd8d444040e4f41be33562f63e5d2eb201447
> commit + 21679dc5afe28d00d3188bb529f3cefffdb06b64
> blob - b0bc7c7d83c8479fd1d9b762eaf78551f430d1a4
> blob + e6d3950b1c2fa7616f6a5e4df7e81874347259fe
> --- libexec/got-fetch-http/Makefile
> +++ libexec/got-fetch-http/Makefile
> @@ -3,7 +3,7 @@
> .include "../../got-version.mk"
>
> PROG= got-fetch-http
> -SRCS= got-fetch-http.c bufio.c hash.c error.c inflate.c pollfd.c
> +SRCS= got-fetch-http.c bufio.c hash.c error.c inflate.c pkt.c pollfd.c
>
> CPPFLAGS= -I${.CURDIR}/../../include -I${.CURDIR}/../../lib
>
> blob - f59556fe906b0a5f6b8f565d12b387c701f2f4c7
> blob + b9e126395c419d439c968c0b1b113ab6e1a26b37
> --- libexec/got-fetch-http/got-fetch-http.c
> +++ libexec/got-fetch-http/got-fetch-http.c
> @@ -29,6 +29,7 @@
> #include <tls.h>
> #include <unistd.h>
>
> +#include "got_error.h"
> #include "got_version.h"
>
> #include "got_lib_pkt.h"
> @@ -346,14 +347,16 @@ http_chunk(struct bufio *bio, const void *buf, size_t
> static int
> get_refs(int https, const char *host, const char *port, const char *path)
> {
> - struct bufio bio;
> - char buf[GOT_PKT_MAX];
> - const char *errstr, *sufx = "/info/refs";
> - size_t skip, chunksz = 0;
> - ssize_t r;
> - int chunked;
> - int sock;
> - int ret = -1;
> + struct bufio bio;
> + char buf[GOT_PKT_MAX];
> + const struct got_error *e;
> + const char *sufx = "/info/refs";
> + size_t chunksz = 0;
> + ssize_t r;
> + int skip;
> + int chunked;
> + int sock;
> + int ret = -1;
>
> if ((sock = dial(https, host, port)) == -1)
> return -1;
> @@ -380,10 +383,10 @@ get_refs(int https, const char *host, const char *port
> r = http_read(&bio, chunked, &chunksz, buf, 4);
> if (r <= 0)
> goto err;
> - buf[4] = '\0';
> - skip = hexstrtonum(buf, 0, INT_MAX, &errstr);
> - if (errstr != NULL) {
> - warnx("pktlen is %s", errstr);
> +
> + e = got_pkt_readlen(&skip, buf, verbose);
> + if (e) {
> + warnx("%s", e->msg);
> goto err;
> }
>
> @@ -419,15 +422,15 @@ static int
> upload_request(int https, const char *host, const char *port, const char *path,
> FILE *in)
> {
> - struct bufio bio;
> - const char *errstr;
> - char buf[GOT_PKT_MAX];
> - ssize_t r;
> - size_t chunksz = 0;
> - long long t;
> - int chunked;
> - int sock;
> - int ret = -1;
> + struct bufio bio;
> + char buf[GOT_PKT_MAX];
> + const struct got_error *e;
> + ssize_t r;
> + size_t chunksz = 0;
> + int t;
> + int chunked;
> + int sock;
> + int ret = -1;
>
> if ((sock = dial(https, host, port)) == -1)
> return -1;
> @@ -459,10 +462,9 @@ upload_request(int https, const char *host, const char
> if (r != 4)
> goto err;
>
> - buf[4] = '\0';
> - t = hexstrtonum(buf, 0, sizeof(buf), &errstr);
> - if (errstr != NULL) {
> - warnx("pktline len is %s", errstr);
> + e = got_pkt_readlen(&t, buf, verbose);
> + if (e) {
> + warnx("%s", e->msg);
> goto err;
> }
>
>
>
use got_pkt_readlen in a few more places