Config option to disable side-band-64k for transport
commitb6e7fcf53364346bd84d7d3bfafce790d0dbeaae
authorThomas Braun <thomas.braun@byte-physics.de>
Thu, 8 May 2014 19:43:24 +0000 (8 21:43 +0200)
committerJohannes Schindelin <johannes.schindelin@gmx.de>
Sat, 10 May 2014 22:13:50 +0000 (10 17:13 -0500)
treefe1d3eec6ac39fef768df9ab11b4bbaec054d628
parentdb40d884d0209601231f2eab38645ceabac58383
Config option to disable side-band-64k for transport

Since commit 0c499ea60f the send-pack builtin uses the side-band-64k
capability if advertised by the server.

Unfortunately this breaks pushing over the dump git protocol if used
over a network connection.

The detailed reasons for this breakage are (by courtesy of Jeff Preshing,
quoted from ttps://groups.google.com/d/msg/msysgit/at8D7J-h7mw/eaLujILGUWoJ):
----------------------------------------------------------------------------
MinGW wraps Windows sockets in CRT file descriptors in order to mimic the
functionality of POSIX sockets. This causes msvcrt.dll to treat sockets as
Installable File System (IFS) handles, calling ReadFile, WriteFile,
DuplicateHandle and CloseHandle on them. This approach works well in simple
cases on recent versions of Windows, but does not support all usage patterns.
In particular, using this approach, any attempt to read & write concurrently
on the same socket (from one or more processes) will deadlock in a scenario
where the read waits for a response from the server which is only invoked after
the write. This is what send_pack currently attempts to do in the use_sideband
codepath.
----------------------------------------------------------------------------

The new config option "sendpack.sideband" allows to override the side-band-64k
capability of the server, and thus makes the dump git protocol work.

Other transportation methods like ssh and http/https still benefit from
the sideband channel, therefore the default value of "sendpack.sideband"
is still true.

Signed-off-by: Thomas Braun <thomas.braun@byte-physics.de>
Documentation/config.txt
send-pack.c