serve: reject commands used as capabilities
commit0ab7eeccd9aea668819288c086dcdf57ca14a026
authorJeff King <peff@peff.net>
Wed, 15 Sep 2021 18:36:36 +0000 (15 14:36 -0400)
committerJunio C Hamano <gitster@pobox.com>
Wed, 15 Sep 2021 19:25:19 +0000 (15 12:25 -0700)
tree946ea970d2bc853e825153193b1d6af89e5017f6
parent108c265f272d30ffaee423f7cc35885e9ac5d0e5
serve: reject commands used as capabilities

Our table of v2 "capabilities" contains everything we might tell the
client we support. But there are differences in how we expect the client
to respond. Some of the entries are true capabilities (i.e., we expect
the client to say "yes, I support this"), and some are ones we expect
them to send as commands (with "command=ls-refs" or similar).

When we receive a capability used as a command, we complain about that.
But when we receive a command used as a capability (e.g., just "ls-refs"
in a pkt-line by itself), we silently ignore it.

This isn't really hurting anything (clients shouldn't send it, and we'll
ignore it), but we can tighten up the protocol to match what we expect
to happen.

There are two new tests here. The first one checks a capability used as
a command, which already passes. The second tests a command as a
capability, which this patch fixes.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
serve.c
t/t5701-git-serve.sh