On Tue, May 26, 2015 at 6:01 PM, Stefan Beller sbel...@google.com wrote:
transport: get_refs_via_connect exchanges capabilities before refs.
s/exchanges/exchange/
s/\.$//
Signed-off-by: Stefan Beller sbel...@google.com
---
transport.c | 29 +
1 file changed, 25 insertions(+), 4 deletions(-)
diff --git a/transport.c b/transport.c
index 33644a6..1cd9b77 100644
--- a/transport.c
+++ b/transport.c
@@ -526,12 +526,33 @@ static struct ref *get_refs_via_connect(struct
transport *transport, int for_pus
{
struct git_transport_data *data = transport-data;
struct ref *refs;
+ int version = 0;
+ if (transport-smart_options)
+ version = transport-smart_options-transport_version;
connect_setup(transport, for_push, 0);
- get_remote_heads(data-fd[0], NULL, 0, refs,
-for_push ? REF_NORMAL : 0,
-data-extra_have,
-data-shallow);
+ switch (version) {
+ default: /*
+ * Configured a protocol version 2?
+ * Try version 2 as it's the most future proof.
+ */
+ /* fall through */
+ case 2: /* first talk about capabilities, then get the heads
*/
+ get_remote_capabilities(data-fd[0], NULL, 0);
+ request_capabilities(data-fd[1]);
+ get_remote_heads(data-fd[0], NULL, 0, refs,
+for_push ? REF_NORMAL : 0,
+data-extra_have,
+data-shallow);
+ break;
+ case 1: /* configured version 1, fall through */
+ case 0: /* unconfigured, use first protocol */
+ get_remote_heads(data-fd[0], NULL, 0, refs,
+for_push ? REF_NORMAL : 0,
+data-extra_have,
+data-shallow);
+ break;
+ }
data-got_remote_heads = 1;
return refs;
--
2.4.1.345.gab207b6.dirty
--
To unsubscribe from this list: send the line unsubscribe git in
the body of a message to majord...@vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html