From ac11219b8014fec1c5a83f1b19cf78015adc856c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Carlos=20Mart=C3=ADn=20Nieto?= Date: Mon, 19 May 2014 16:54:19 +0200 Subject: [PATCH] smart: send a flush when we disconnect The git server wants to hear a flush from us when we disconnect, particularly when we want to perform a fetch but are up to date. --- src/transports/smart.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/transports/smart.c b/src/transports/smart.c index 69eaf9b78..7fb41f788 100644 --- a/src/transports/smart.c +++ b/src/transports/smart.c @@ -272,6 +272,18 @@ static int git_smart__close(git_transport *transport) unsigned int i; git_pkt *p; int ret; + git_smart_subtransport_stream *stream; + const char flush[] = "0000"; + + /* + * If we're still connected at this point and not using RPC, + * we should say goodbye by sending a flush, or git-daemon + * will complain that we disconnected unexpectedly. + */ + if (t->connected && !t->rpc && + !t->wrapped->action(&stream, t->wrapped, t->url, GIT_SERVICE_UPLOADPACK)) { + t->current_stream->write(t->current_stream, flush, 4); + } ret = git_smart__reset_stream(t, true);