Commit 22935b06d160c8b33e90784d43480859ca65d3b6

Carlos Martín Nieto 2012-10-07T10:20:23

protocol: don't store flushes Storing flushes in the refs vector doesn't let us recognize when the remote is empty, as we'd always introduce at least one element into it. These flushes aren't necessary, so we can simply ignore them.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
diff --git a/src/protocol.c b/src/protocol.c
index 8f673cd..affad51 100644
--- a/src/protocol.c
+++ b/src/protocol.c
@@ -45,11 +45,13 @@ int git_protocol_store_refs(git_transport *t, int flushes)
 			return -1;
 		}
 
-		if (git_vector_insert(refs, pkt) < 0)
+		if (pkt->type != GIT_PKT_FLUSH && git_vector_insert(refs, pkt) < 0)
 			return -1;
 
-		if (pkt->type == GIT_PKT_FLUSH)
+		if (pkt->type == GIT_PKT_FLUSH) {
 			flush++;
+			git_pkt_free(pkt);
+		}
 	} while (flush < flushes);
 
 	return flush;