summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Steinhardt <psteinhardt@gitlab.com>2020-02-28 08:55:14 +0100
committerPatrick Steinhardt <psteinhardt@gitlab.com>2020-02-28 09:32:41 +0100
commitcab69fadc13b530f21f910c1d23d146758c365cb (patch)
tree88958ce7c8d05a4aaa9d6411f5062c68c7c46ba8
parent9e7533784ef729eab0b2dcc659892dbf1e0e0868 (diff)
downloadgitlab-shell-cab69fadc13b530f21f910c1d23d146758c365cb.tar.gz
commands: pass through GIT_PROTOCOL envvar provided by clientsps-git-protocol-envvar
Both git-upload-pack and git-receive-pack services inspect the GIT_PROTOCOL environment transferred via SSH in order to decide which protocols are supported by a given client. Currently, we don't use the environment variable at all, though, but instead forward the GitProtocol field of the access verification response. Improve this by passing on the GIT_PROTOCOL environment variable provided by the client as-is.
-rw-r--r--internal/command/commandargs/shell.go2
-rw-r--r--internal/command/receivepack/gitalycall.go3
-rw-r--r--internal/command/uploadpack/gitalycall.go3
3 files changed, 6 insertions, 2 deletions
diff --git a/internal/command/commandargs/shell.go b/internal/command/commandargs/shell.go
index 7e2b72e..1fe59fb 100644
--- a/internal/command/commandargs/shell.go
+++ b/internal/command/commandargs/shell.go
@@ -15,6 +15,8 @@ const (
ReceivePack CommandType = "git-receive-pack"
UploadPack CommandType = "git-upload-pack"
UploadArchive CommandType = "git-upload-archive"
+
+ GitProtocolEnv = "GIT_PROTOCOL"
)
var (
diff --git a/internal/command/receivepack/gitalycall.go b/internal/command/receivepack/gitalycall.go
index a8d8160..529b296 100644
--- a/internal/command/receivepack/gitalycall.go
+++ b/internal/command/receivepack/gitalycall.go
@@ -2,6 +2,7 @@ package receivepack
import (
"context"
+ "os"
"google.golang.org/grpc"
@@ -26,7 +27,7 @@ func (c *Command) performGitalyCall(response *accessverifier.Response) error {
GlId: response.UserId,
GlRepository: response.Repo,
GlUsername: response.Username,
- GitProtocol: response.GitProtocol,
+ GitProtocol: os.Getenv(commandargs.GitProtocolEnv),
GitConfigOptions: response.GitConfigOptions,
}
diff --git a/internal/command/uploadpack/gitalycall.go b/internal/command/uploadpack/gitalycall.go
index 8c8a254..26f87f8 100644
--- a/internal/command/uploadpack/gitalycall.go
+++ b/internal/command/uploadpack/gitalycall.go
@@ -2,6 +2,7 @@ package uploadpack
import (
"context"
+ "os"
"google.golang.org/grpc"
@@ -23,7 +24,7 @@ func (c *Command) performGitalyCall(response *accessverifier.Response) error {
request := &pb.SSHUploadPackRequest{
Repository: &response.Gitaly.Repo,
- GitProtocol: response.GitProtocol,
+ GitProtocol: os.Getenv(commandargs.GitProtocolEnv),
GitConfigOptions: response.GitConfigOptions,
}