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
brian m. carlson <sandals@crustytoothpaste.net>
Date
Apr 29, 2019, 23:19 UTC
Message-ID
<20190429231928.GQ6316@genre.crustytoothpaste.net>
In-Reply-To
<31aa7bfcab834b753cc9f52fc9cc187f65e2d964.1556575475.git.gitgitgadget@gmail.com>
On Mon, Apr 29, 2019 at 03:04:36PM -0700, Thomas Braun via GitGitGadget wrote:
Show 25 quoted lines
> 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.

-- 
brian m. carlson: Houston, Texas, US
OpenPGP: https://keybase.io/bk2204
Previous: Johannes SchindelinNext: Johannes Schindelin
Message 9 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.