Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNick Thomas <nick@gitlab.com>2019-04-11 17:29:08 +0300
committerNick Thomas <nick@gitlab.com>2019-04-16 17:16:23 +0300
commit670b2c1af55ab5e993f3a3b05a1078e394f9ceda (patch)
tree881907dee2f8af2bf6989a1d40923d1febf049fc /lib/gitlab/workhorse.rb
parent2845e8d9736b82c89ef33a3dd24caa4f9816b0e6 (diff)
JSON-encoded binary fields should use Base64::encode64
It is not interoperable to use Base64::urlsafe_encode64 for fields in JSON that contain binary (as opposed to UTF8-safe) data. For instance, the Golang JSON decoder (which is what gitlab-workhorse uses) insists upon the standard base64 encoding.
Diffstat (limited to 'lib/gitlab/workhorse.rb')
-rw-r--r--lib/gitlab/workhorse.rb7
1 files changed, 6 insertions, 1 deletions
diff --git a/lib/gitlab/workhorse.rb b/lib/gitlab/workhorse.rb
index 533757d2237..2a8b1568f8b 100644
--- a/lib/gitlab/workhorse.rb
+++ b/lib/gitlab/workhorse.rb
@@ -229,12 +229,17 @@ module Gitlab
protected
+ # This is the outermost encoding of a senddata: header. It is safe for
+ # inclusion in HTTP response headers
def encode(hash)
Base64.urlsafe_encode64(JSON.dump(hash))
end
+ # This is for encoding individual fields inside the senddata JSON that
+ # contain binary data. In workhorse, the corresponding struct field should
+ # be type []byte
def encode_binary(binary)
- Base64.urlsafe_encode64(binary)
+ Base64.encode64(binary)
end
def gitaly_server_hash(repository)