commit - 9b2510924916cdc1e66d879b43f4dc953aac3c83
commit + 2a0fb198ea0e9b0b82518ecf0f8d04962d74aca6
blob - bcfba4ab960fd7d539e4248572d69f7fc58159dc
blob + a4416fcbce8dd3e76d89bda1f9a84447af2ce030
--- lib/serve.c
+++ lib/serve.c
}
static const struct got_error *
-send_zero_refs(int outfd, int chattygot)
+send_zero_refs(int outfd, int client_is_reading, int chattygot)
{
const struct got_error *err = NULL;
char buf[GOT_PKT_MAX];
if (len >= sizeof(buf))
return got_error(GOT_ERR_NO_SPACE);
- err = got_gitproto_append_capabilities(&capalen, buf, len,
- sizeof(buf), read_capabilities, nitems(read_capabilities));
- if (err)
- return err;
+ if (client_is_reading) {
+ err = got_gitproto_append_capabilities(&capalen, buf, len,
+ sizeof(buf), read_capabilities, nitems(read_capabilities));
+ if (err)
+ return err;
+ } else {
+ err = got_gitproto_append_capabilities(&capalen, buf, len,
+ sizeof(buf), write_capabilities,
+ nitems(write_capabilities));
+ if (err)
+ return err;
+ }
return got_pkt_writepkt(outfd, buf, len + capalen, chattygot);
}
nrefs = ireflist.nrefs;
have_nrefs = 1;
if (nrefs == 0)
- err = send_zero_refs(outfd, chattygot);
+ err = send_zero_refs(outfd, client_is_reading,
+ chattygot);
break;
case GOTD_IMSG_REF:
if (!have_nrefs || nrefs == 0) {