diff options
-rw-r--r-- | src/transports/smart.c | 12 |
1 files changed, 12 insertions, 0 deletions
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); |