http-backend: cleanup writing to child process
As explained in [1], we should not assume the reason why the writing has failed, and even if the reason is that child has existed not the reason why it have done so. So instead just say that writing has failed. [1] https://public-inbox.org/git/20180604044408.GD14451@sigill.intra.peff.net/ Signed-off-by: Max Kirillov <max@max630.net> Signed-off-by: Junio C Hamano <gitster@pobox.com>
Max Kirillov committed
Jun 10, 2018 at 18:05 UTC
6b1fae1dfbbdb6dc352567c0fc45a9e87474192d
1 file changed
+9
-5
http-backend.c
+9
-5
@@ -279,6 +279,12 @@ static struct rpc_service *select_service(struct strbuf *hdr, const char *name)
279
return svc;
280
}
281
282
+static void write_to_child(int out, const unsigned char *buf, ssize_t len, const char *prog_name)
283
+{
284
+ if (write_in_full(out, buf, len) < 0)
285
+ die("unable to write to '%s'", prog_name);
286
+}
287
+
288
/*
289
* This is basically strbuf_read(), except that if we
290
* hit max_request_buffer we die (we'd rather reject a
@@ -361,9 +367,8 @@ static void inflate_request(const char *prog_name, int out, int buffer_input)
367
die("zlib error inflating request, result %d", ret);
368
369
n = stream.total_out - cnt;
364
- if (write_in_full(out, out_buf, n) < 0)
365
- die("%s aborted reading request", prog_name);
366
- cnt += n;
370
+ write_to_child(out, out_buf, stream.total_out - cnt, prog_name);
371
+ cnt = stream.total_out;
372
373
if (ret == Z_STREAM_END)
374
goto done;
@@ -382,8 +387,7 @@ static void copy_request(const char *prog_name, int out)
387
ssize_t n = read_request(0, &buf);
388
if (n < 0)
389
die_errno("error reading request body");
385
- if (write_in_full(out, buf, n) < 0)
386
- die("%s aborted reading request", prog_name);
390
+ write_to_child(out, buf, n, prog_name);
391
close(out);
392
free(buf);
393
}