Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
mingw: optionally disable side-band-64k for transport
Since commit 0c499ea (send-pack: demultiplex a sideband stream with status data, 2010-02-05) the built-in send-pack 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 when using MinGW (but *not* when using mingw-w64). The detailed reasons for this, are courtesy of Jeff Preshing, quoted from https://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 plain git:// protocol work. As this only affects builds against MinGW, the default is still to use side band. [jes: split out the documentation into Documentation/config/, touched up the commit message.] Signed-off-by: Thomas Braun <thomas.braun@byte-physics.de> Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
- Loading branch information