BigW Consortium Gitlab

Commit a6028205 by Kamil Trzciński (OoO till 16th of April) Committed by Filipa Lacerda

Merge branch '44981-http-io-trace-with-multi-byte-char' into 'master'

Fix `Trace::HttpIO` can not render multi-byte chars Closes #44981 See merge request gitlab-org/gitlab-ce!18417
parent 902035d3
---
title: Fix `Trace::HttpIO` can not render multi-byte chars
merge_request: 18417
author:
type: fixed
...@@ -75,18 +75,28 @@ module Gitlab ...@@ -75,18 +75,28 @@ module Gitlab
end end
end end
def read(length = nil) def read(length = nil, outbuf = "")
out = "" out = ""
until eof? || (length && out.length >= length) length ||= size - tell
until length <= 0 || eof?
data = get_chunk data = get_chunk
break if data.empty? break if data.empty?
out << data chunk_bytes = [BUFFER_SIZE - chunk_offset, length].min
@tell += data.bytesize chunk_data = data.byteslice(0, chunk_bytes)
out << chunk_data
@tell += chunk_data.bytesize
length -= chunk_data.bytesize
end end
out = out[0, length] if length && out.length > length # If outbuf is passed, we put the output into the buffer. This supports IO.copy_stream functionality
if outbuf
outbuf.slice!(0, outbuf.bytesize)
outbuf << out
end
out out
end end
...@@ -158,7 +168,7 @@ module Gitlab ...@@ -158,7 +168,7 @@ module Gitlab
# Provider: GCS # Provider: GCS
# - When the file size is larger than requested Content-range, the Content-range is included in responces with Net::HTTPPartialContent 206 # - When the file size is larger than requested Content-range, the Content-range is included in responces with Net::HTTPPartialContent 206
# - When the file size is smaller than requested Content-range, the Content-range is included in responces with Net::HTTPOK 200 # - When the file size is smaller than requested Content-range, the Content-range is included in responces with Net::HTTPOK 200
@chunk_range ||= (chunk_start...(chunk_start + @chunk.length)) @chunk_range ||= (chunk_start...(chunk_start + @chunk.bytesize))
end end
@chunk[chunk_offset..BUFFER_SIZE] @chunk[chunk_offset..BUFFER_SIZE]
......
This source diff could not be displayed because it is too large. You can view the blob instead.
...@@ -44,10 +44,11 @@ module HttpIOHelpers ...@@ -44,10 +44,11 @@ module HttpIOHelpers
def remote_trace_body def remote_trace_body
@remote_trace_body ||= File.read(expand_fixture_path('trace/sample_trace')) @remote_trace_body ||= File.read(expand_fixture_path('trace/sample_trace'))
.force_encoding(Encoding::BINARY)
end end
def remote_trace_size def remote_trace_size
remote_trace_body.length remote_trace_body.bytesize
end end
def set_smaller_buffer_size_than(file_size) def set_smaller_buffer_size_than(file_size)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment