upload-pack: send keepalive packets during pack computation
authorJeff King <peff@peff.net>
Sun, 8 Sep 2013 09:01:31 +0000 (05:01 -0400)
committerJunio C Hamano <gitster@pobox.com>
Mon, 9 Sep 2013 18:14:37 +0000 (11:14 -0700)
commit05e95155a10fab3d3c495076e51b2ce79fa26cf3
treee1d0db6d0b9957ed5325488d06d24b96bd9d87dc
parentedca4152560522a431a51fc0a06147fc680b5b18
upload-pack: send keepalive packets during pack computation

When upload-pack has started pack-objects, there may be a quiet
period while pack-objects prepares the pack (i.e., counting objects
and delta compression). Normally we would see (and send to the
client) progress information, but if "--quiet" is in effect,
pack-objects will produce nothing at all until the pack data is
ready. On a large repository, this can take tens of seconds (or even
minutes if the system is loaded or the repository is badly packed).
Clients or intermediate proxies can sometimes give up in this
situation, assuming that the server or connection has hung.

This patch introduces a "keepalive" option; if upload-pack sees no
data from pack-objects for a certain number of seconds, it will send
an empty sideband data packet to let the other side know that we are
still working on it.

Signed-off-by: Jeff King <peff@peff.net>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
Documentation/config.txt
upload-pack.c