server_supports_v2(): use a separate function for die_on_error
The server_supports_v2() helper lets a caller find out if the server
supports a feature, and will optionally die if it's not supported. This
makes the return value confusing, as it's only meaningful when the
function is not asked to die.
Coverity flagged a new call like:
/* check that we support "foo" */
server_supports_v2("foo", 1);
complaining that we usually checked the return value, but this time we
didn't. But this call is correct, and other ones that did:
if (server_supports_v2("foo", 1))
do_something_with_foo();
are "wrong", in the sense that we know the conditional will always be
true (but there's no bug; the code is simply misleading).
Let's split the "die" behavior into its own function which returns void,
and modify each caller to use the correct one.
Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
committed by
Junio C Hamano
parent
8706a59933
commit
a31cfe3283
12
fetch-pack.c
12
fetch-pack.c
@ -1317,15 +1317,15 @@ static void write_fetch_command_and_capabilities(struct strbuf *req_buf,
|
||||
{
|
||||
const char *hash_name;
|
||||
|
||||
if (server_supports_v2("fetch", 1))
|
||||
packet_buf_write(req_buf, "command=fetch");
|
||||
if (server_supports_v2("agent", 0))
|
||||
ensure_server_supports_v2("fetch");
|
||||
packet_buf_write(req_buf, "command=fetch");
|
||||
if (server_supports_v2("agent"))
|
||||
packet_buf_write(req_buf, "agent=%s", git_user_agent_sanitized());
|
||||
if (advertise_sid && server_supports_v2("session-id", 0))
|
||||
if (advertise_sid && server_supports_v2("session-id"))
|
||||
packet_buf_write(req_buf, "session-id=%s", trace2_session_id());
|
||||
if (server_options && server_options->nr &&
|
||||
server_supports_v2("server-option", 1)) {
|
||||
if (server_options && server_options->nr) {
|
||||
int i;
|
||||
ensure_server_supports_v2("server-option");
|
||||
for (i = 0; i < server_options->nr; i++)
|
||||
packet_buf_write(req_buf, "server-option=%s",
|
||||
server_options->items[i].string);
|
||||
|
||||
Reference in New Issue
Block a user