git/list[1] front-page[2] threads[3] people[4] search[5] about
 

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

From
Johannes Schindelin <johannes.schindelin@gmx.de>
Date
Apr 30, 2019, 22:37 UTC
Message-ID
<nycvar.QRO.7.76.6.1904301834230.45@tvgsbejvaqbjf.bet>
In-Reply-To
<20190429231928.GQ6316@genre.crustytoothpaste.net>
Hi brian,
On Mon, 29 Apr 2019, brian m. carlson wrote:
Show 33 quoted lines
> On Mon, Apr 29, 2019 at 03:04:36PM -0700, Thomas Braun via GitGitGadget wrote:
> > From: Thomas Braun <thomas.braun@byte-physics.de>
> >
> > 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

Previous: brian m. carlson
Message 10 of 10 in “Support git:// with old MinGW”
  1. 0/1 Support git:// with old MinGWJohannes Schindelin via GitGitGadget, Apr 29, 2019
  2. 1/1 mingw: optionally disable side-band-64k for transportThomas Braun via GitGitGadget, Apr 29, 2019
  3. Eric SunshineApr 29, 2019
  4. Johannes SchindelinApr 29, 2019
  5. Johannes SixtApr 30, 2019
  6. Johannes SchindelinApr 30, 2019
  7. Johannes SixtApr 30, 2019
  8. Johannes SchindelinMay 3, 2019
  9. brian m. carlsonApr 29, 2019
  10. Johannes SchindelinApr 30, 2019

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.