aboutsummaryrefslogtreecommitdiffstats
path: root/serve.c
diff options
context:
space:
mode:
Diffstat (limited to 'serve.c')
-rw-r--r--serve.c30
1 files changed, 22 insertions, 8 deletions
diff --git a/serve.c b/serve.c
index cbf4a143cf..aa651b73e9 100644
--- a/serve.c
+++ b/serve.c
@@ -1,6 +1,7 @@
-#include "cache.h"
+#include "git-compat-util.h"
#include "repository.h"
#include "config.h"
+#include "hash-ll.h"
#include "pkt-line.h"
#include "version.h"
#include "ls-refs.h"
@@ -8,17 +9,19 @@
#include "serve.h"
#include "upload-pack.h"
#include "bundle-uri.h"
+#include "trace2.h"
static int advertise_sid = -1;
+static int advertise_object_info = -1;
static int client_hash_algo = GIT_HASH_SHA1;
-static int always_advertise(struct repository *r,
- struct strbuf *value)
+static int always_advertise(struct repository *r UNUSED,
+ struct strbuf *value UNUSED)
{
return 1;
}
-static int agent_advertise(struct repository *r,
+static int agent_advertise(struct repository *r UNUSED,
struct strbuf *value)
{
if (value)
@@ -34,7 +37,7 @@ static int object_format_advertise(struct repository *r,
return 1;
}
-static void object_format_receive(struct repository *r,
+static void object_format_receive(struct repository *r UNUSED,
const char *algo_name)
{
if (!algo_name)
@@ -48,7 +51,7 @@ static void object_format_receive(struct repository *r,
static int session_id_advertise(struct repository *r, struct strbuf *value)
{
if (advertise_sid == -1 &&
- git_config_get_bool("transfer.advertisesid", &advertise_sid))
+ repo_config_get_bool(r, "transfer.advertisesid", &advertise_sid))
advertise_sid = 0;
if (!advertise_sid)
return 0;
@@ -57,7 +60,7 @@ static int session_id_advertise(struct repository *r, struct strbuf *value)
return 1;
}
-static void session_id_receive(struct repository *r,
+static void session_id_receive(struct repository *r UNUSED,
const char *client_sid)
{
if (!client_sid)
@@ -65,6 +68,17 @@ static void session_id_receive(struct repository *r,
trace2_data_string("transfer", NULL, "client-sid", client_sid);
}
+static int object_info_advertise(struct repository *r, struct strbuf *value UNUSED)
+{
+ if (advertise_object_info == -1 &&
+ repo_config_get_bool(r, "transfer.advertiseobjectinfo",
+ &advertise_object_info)) {
+ /* disabled by default */
+ advertise_object_info = 0;
+ }
+ return advertise_object_info;
+}
+
struct protocol_capability {
/*
* The name of the capability. The server uses this name when
@@ -133,7 +147,7 @@ static struct protocol_capability capabilities[] = {
},
{
.name = "object-info",
- .advertise = always_advertise,
+ .advertise = object_info_advertise,
.command = cap_object_info,
},
{