tp2 0.19.4 → 0.20.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.github/workflows/test.yml +1 -1
- data/CHANGELOG.md +5 -0
- data/lib/tp2/connection.rb +38 -18
- data/lib/tp2/version.rb +1 -1
- data/test/test_connection.rb +4 -4
- data/tp2.gemspec +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: f50f04dad197bd317793e48f2f46e90f87c0ddf0f65c98d99c57cc8e29a24f66
|
|
4
|
+
data.tar.gz: 287838481d4b0e8150c021368cf709543331b5d4b0e87bb37b335c750c8ae267
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
6
|
+
metadata.gz: 1597b8856cdb6adf327652d5e161d7f8b9965358b9898ebbf2f8a5eeb5af994e3d9110b09093867ae651c9237dd4f3f31b10d7bb2a8d6e0854cb5379980d8e7d
|
|
7
|
+
data.tar.gz: 9f85ecb5c04107b8db550a7996429d39e39baab2efbcf3a355cfcb756ba6be45fb009a9da63ab2cf44fbda4bd2bec15b5187a65e867c97ac6d8b6aeeb7479832
|
data/.github/workflows/test.yml
CHANGED
data/CHANGELOG.md
CHANGED
data/lib/tp2/connection.rb
CHANGED
|
@@ -158,25 +158,45 @@ module TP2
|
|
|
158
158
|
|
|
159
159
|
CHUNKED_ENCODING_POSTLUDE = "\r\n#{EMPTY_CHUNK}"
|
|
160
160
|
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
161
|
+
if UM.instance_methods.include?(:sendv)
|
|
162
|
+
# Sends response including headers and body. Waits for the request to complete
|
|
163
|
+
# if not yet completed. The body is sent using chunked transfer encoding.
|
|
164
|
+
# @param request [Qeweney::Request] HTTP request
|
|
165
|
+
# @param body [String] response body
|
|
166
|
+
# @param headers
|
|
167
|
+
def respond(request, body, headers)
|
|
168
|
+
headers = @response_headers.merge(headers) if @response_headers
|
|
169
|
+
|
|
170
|
+
formatted_headers = format_headers(headers, body)
|
|
171
|
+
@response_headers = headers
|
|
172
|
+
request&.tx_incr(formatted_headers.bytesize + (body ? body.bytesize : 0))
|
|
173
|
+
if body
|
|
174
|
+
chunk_prelude = "#{body.bytesize.to_s(16)}\r\n"
|
|
175
|
+
@machine.sendv(@fd, formatted_headers, chunk_prelude, body, CHUNKED_ENCODING_POSTLUDE)
|
|
176
|
+
else
|
|
177
|
+
@machine.send(@fd, formatted_headers, formatted_headers.bytesize, SEND_FLAGS)
|
|
178
|
+
end
|
|
179
|
+
@logger&.info(request: request, response_headers: headers) if request
|
|
180
|
+
@done = true
|
|
181
|
+
end
|
|
182
|
+
else
|
|
183
|
+
def respond(request, body, headers)
|
|
184
|
+
headers = @response_headers.merge(headers) if @response_headers
|
|
185
|
+
|
|
186
|
+
formatted_headers = format_headers(headers, body)
|
|
187
|
+
@response_headers = headers
|
|
188
|
+
request&.tx_incr(formatted_headers.bytesize + (body ? body.bytesize : 0))
|
|
189
|
+
if body
|
|
190
|
+
chunk_prelude = "#{body.bytesize.to_s(16)}\r\n"
|
|
191
|
+
buf = +''
|
|
192
|
+
buf << formatted_headers << chunk_prelude << body << CHUNKED_ENCODING_POSTLUDE
|
|
193
|
+
@machine.send(@fd, buf, SEND_FLAGS)
|
|
194
|
+
else
|
|
195
|
+
@machine.send(@fd, formatted_headers, formatted_headers.bytesize, SEND_FLAGS)
|
|
196
|
+
end
|
|
197
|
+
@logger&.info(request: request, response_headers: headers) if request
|
|
198
|
+
@done = true
|
|
177
199
|
end
|
|
178
|
-
@logger&.info(request: request, response_headers: headers) if request
|
|
179
|
-
@done = true
|
|
180
200
|
end
|
|
181
201
|
|
|
182
202
|
# Sends response headers. If empty_response is truthy, the response status
|
data/lib/tp2/version.rb
CHANGED
data/test/test_connection.rb
CHANGED
|
@@ -491,9 +491,9 @@ class ConnectionTest < Minitest::Test
|
|
|
491
491
|
@machine.snooze
|
|
492
492
|
end
|
|
493
493
|
|
|
494
|
-
content = IO.read(
|
|
494
|
+
content = IO.read(fn)
|
|
495
495
|
file_size = content.bytesize
|
|
496
|
-
expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\n\r\
|
|
496
|
+
expected = "HTTP/1.1 200\r\nTransfer-Encoding: chunked\r\n\r\n#{file_size.to_s(16)}\r\n#{content}\r\n0\r\n\r\n"
|
|
497
497
|
|
|
498
498
|
assert_equal expected, response
|
|
499
499
|
end
|
|
@@ -545,7 +545,7 @@ class ConnectionTest < Minitest::Test
|
|
|
545
545
|
assert_equal expected, response
|
|
546
546
|
end
|
|
547
547
|
|
|
548
|
-
def
|
|
548
|
+
def test_set_response_headers_1
|
|
549
549
|
@hook = ->(req) {
|
|
550
550
|
req.set_response_headers("Set-Cookie" => 'foo=bar')
|
|
551
551
|
req.respond('foo')
|
|
@@ -569,7 +569,7 @@ class ConnectionTest < Minitest::Test
|
|
|
569
569
|
assert_equal expected, response
|
|
570
570
|
end
|
|
571
571
|
|
|
572
|
-
def
|
|
572
|
+
def test_set_response_headers_2
|
|
573
573
|
@hook = ->(req) {
|
|
574
574
|
req.set_response_headers("Set-Cookie" => 'foo=bar')
|
|
575
575
|
req.set_response_headers("Foo" => 'bar')
|
data/tp2.gemspec
CHANGED
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: tp2
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 0.
|
|
4
|
+
version: 0.20.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Sharon Rosner
|
|
@@ -29,14 +29,14 @@ dependencies:
|
|
|
29
29
|
requirements:
|
|
30
30
|
- - "~>"
|
|
31
31
|
- !ruby/object:Gem::Version
|
|
32
|
-
version: '0.
|
|
32
|
+
version: '0.25'
|
|
33
33
|
type: :runtime
|
|
34
34
|
prerelease: false
|
|
35
35
|
version_requirements: !ruby/object:Gem::Requirement
|
|
36
36
|
requirements:
|
|
37
37
|
- - "~>"
|
|
38
38
|
- !ruby/object:Gem::Version
|
|
39
|
-
version: '0.
|
|
39
|
+
version: '0.25'
|
|
40
40
|
- !ruby/object:Gem::Dependency
|
|
41
41
|
name: rack
|
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|