On Fri, Sep 16, 2016 at 7:12 AM, Kevin Wern <[email protected]> wrote:
> +static void prime_clone(void)
> +{
> + char *result, *result_full, *line;
> + size_t result_len;
> + int err = 0, one_successful = 0;
> +
> + if (request_service("git-prime-clone", &result_full, &result,
> + &result_len, HTTP_ERROR_GENTLE)) {
> + while (line = packet_read_line_buf_gentle(&result,
> &result_len,
> + NULL)) {
> + char *space = strchr(line ,' ');
> +
> + // We will eventually support multiple resources, so
> + // always parse the whole message
> + if (err)
> + continue;
> + if (!space || strchr(space + 1, ' ')) {
> + if (options.verbosity > 1)
> + fprintf(stderr, "prime clone "
> + "protocol error: got '%s'\n",
> + line);
> + printf("error\n");
> + err = 1;
> + continue;
> + }
> +
> + one_successful = 1;
> + printf("%s\n", line);
A brief overview for this service in
Documentation/technical/http-protocol.txt (and maybe
Documentation/gitremote-helpers.txt as well) would be great help. It's
a bit hard to follow because at this point I don't know anything about
the server side (and on top of that I was confused between http
send/receive vs transport send/receive, but this is my fault).
> + }
> + if (!one_successful && options.verbosity > 1)
> + fprintf(stderr, "did not get required components for "
> + "alternate resource\n");
> + }
> +
> + printf("\n");
> + fflush(stdout);
> + free(result_full);
> +}
--
Duy