[PATCH] oe-git-proxy: Enable oe-git-proxy for git >= 2.32


Florian Bezdeka
 

Modern git versions (>= 2.32) have a optimization enabled where the
socket communication is moved into half-duplex mode once the client has
sent all necessary data and is waiting for RX. git is simply closing the
TX part of the socket.

There are proxy implementations out there that will shutdown the
complete communication once the partial shutdown was received - breaking
the git:// protocol.

Using socat with the ignoreeof option fixes this issue. Closing one of
stdin/stdout will not trigger a partial shutdown of the underlying
socket.

ignoreeof is a stone old feature. It will not break in combination with
older git versions - where the partial shutdown will not be triggerend
anyhow.

Link: https://lore.kernel.org/git/4831bbeb0ec29ec84f92e0badfc0d628ecc6921d.camel@siemens.com/

Signed-off-by: Florian Bezdeka <florian.bezdeka@...>
---
scripts/oe-git-proxy | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/oe-git-proxy b/scripts/oe-git-proxy
index aa9b9dc9a9..80a7a030a7 100755
--- a/scripts/oe-git-proxy
+++ b/scripts/oe-git-proxy
@@ -184,4 +184,4 @@ else
METHOD="PROXY:$PROXY:$1:$2,proxyport=${PORT}${PROXYAUTH}"
fi

-exec $SOCAT STDIO "$METHOD"
+exec $SOCAT STDIO,ignoreeof "$METHOD"
--
2.39.1


Florian Bezdeka
 

Hi Richard,

please hold this one back. Will send a v2 hopefully soon. One more side
effect discovered that needs investigations first. Sorry.

Best regards,
Florian

On Wed, 2023-02-01 at 15:04 +0100, Florian Bezdeka via
lists.openembedded.org wrote:
Modern git versions (>= 2.32) have a optimization enabled where the
socket communication is moved into half-duplex mode once the client has
sent all necessary data and is waiting for RX. git is simply closing the
TX part of the socket.

There are proxy implementations out there that will shutdown the
complete communication once the partial shutdown was received - breaking
the git:// protocol.

Using socat with the ignoreeof option fixes this issue. Closing one of
stdin/stdout will not trigger a partial shutdown of the underlying
socket.

ignoreeof is a stone old feature. It will not break in combination with
older git versions - where the partial shutdown will not be triggerend
anyhow.

Link: https://lore.kernel.org/git/4831bbeb0ec29ec84f92e0badfc0d628ecc6921d.camel@siemens.com/

Signed-off-by: Florian Bezdeka <florian.bezdeka@...>
---
scripts/oe-git-proxy | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/scripts/oe-git-proxy b/scripts/oe-git-proxy
index aa9b9dc9a9..80a7a030a7 100755
--- a/scripts/oe-git-proxy
+++ b/scripts/oe-git-proxy
@@ -184,4 +184,4 @@ else
METHOD="PROXY:$PROXY:$1:$2,proxyport=${PORT}${PROXYAUTH}"
fi

-exec $SOCAT STDIO "$METHOD"
+exec $SOCAT STDIO,ignoreeof "$METHOD"