OpenSSH has the nice feature that it sets the IP TOS value of its connection depending on usage. When used in interactive mode, it is set to Minimize-Delay, and other wise to Maximize-Throughput. Its usage by Git is best served by Maximize-Throughput, for obvious reasons. However, it seems to use a DWIM heuristic for detecting interactive mode. The current implementation enters interactive mode if either a PTY is allocated or X11 forwarding is enabled, and even though Git SSH:ing does not allocate a PTY, X11 forwarding is often turned on by default. By removing the DISPLAY env variable before forking, SSH can thus be forced into non-interactive mode, without any obvious ill effects. Signed-off-by: Fredrik Tolf <fredrik@xxxxxxxxxxxxx> --- connect.c | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/connect.c b/connect.c index 574f42f..54888d3 100644 --- a/connect.c +++ b/connect.c @@ -607,6 +607,13 @@ struct child_process *git_connect(int fd[2], const char *url_orig, *arg++ = port; } *arg++ = host; + /* Remove the X11 DISPLAY from the environment, to + * make SSH run non-interactively */ + const char *env[] = { + "DISPLAY", + NULL + }; + conn->env = env; } else { /* remove these from the environment */ -- 1.5.6.2 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html