summaryrefslogtreecommitdiff
path: root/src/transports/git.c
diff options
context:
space:
mode:
authorCarlos Martín Nieto <carlos@cmartin.tk>2012-07-24 17:10:57 +0200
committerCarlos Martín Nieto <carlos@cmartin.tk>2012-07-30 20:28:16 +0200
commit114dc6e14c47ff574b4c97d4519782de3f9d28b2 (patch)
tree85283b30f80129d66017361acf06120bc6379413 /src/transports/git.c
parent64d01de8a7802ebec031f921496747bf09426df1 (diff)
downloadlibgit2-114dc6e14c47ff574b4c97d4519782de3f9d28b2.tar.gz
network: implement multi_ack for the git transport
Diffstat (limited to 'src/transports/git.c')
-rw-r--r--src/transports/git.c10
1 files changed, 10 insertions, 0 deletions
diff --git a/src/transports/git.c b/src/transports/git.c
index 4fcde2d37..f5cdfe7a4 100644
--- a/src/transports/git.c
+++ b/src/transports/git.c
@@ -179,6 +179,12 @@ static int detect_caps(transport_git *t)
continue;
}
+ if(!git__prefixcmp(ptr, GIT_CAP_MULTI_ACK)) {
+ caps->common = caps->multi_ack = 1;
+ ptr += strlen(GIT_CAP_MULTI_ACK);
+ continue;
+ }
+
/* We don't know this capability, so skip it */
ptr = strchr(ptr, ' ');
}
@@ -303,6 +309,10 @@ int git_transport_git(git_transport **out)
GITERR_CHECK_ALLOC(t);
memset(t, 0x0, sizeof(transport_git));
+ if (git_vector_init(&t->parent.common, 8, NULL)) {
+ git__free(t);
+ return -1;
+ }
t->parent.connect = git_connect;
t->parent.negotiation_step = git_negotiation_step;