Thread (10 messages) 10 messages, 5 authors, 2019-05-03

Re: [PATCH 1/1] mingw: optionally disable side-band-64k for transport

From: Johannes Schindelin <hidden>
Date: 2019-04-30 22:37:24

Hi brian,

On Mon, 29 Apr 2019, brian m. carlson wrote:
On Mon, Apr 29, 2019 at 03:04:36PM -0700, Thomas Braun via GitGitGadget wrote:
quoted
From: Thomas Braun <redacted>

Since commit 0c499ea60f (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.
Since this is a platform-specific issue, can we address this using a
compile-time constant instead of a config option? It would be better to
do the right thing automatically in this case and not have to have
people set a config option. It will also allow us to not to have to
maintain a config option indefinitely if MinGW becomes more capable in
the future.
I was really not sure at the time whether this would be fixed in MinGW at
some stage, and with the switch to mingw-w64 (by moving from MSys to MSYS2
as of Git for Windows 2.x) we do not really have any concrete need for it
anymore.

I just thought that it might benefit somebody (it was my impression that
Hannes Sixt still built his own copy with MSys/MinGW, and we do have a
track record of maintaining certain things even for single users, see e.g.
our insistence on creating the .git/branches/ directory upon `git init`).

But if the consensus is that we do not need this at all anymore, I'll be
just as happy to drop that patch.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help