tp2 0.10 → 0.11.1
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/CHANGELOG.md +9 -0
- data/bin/tp2 +1 -0
- data/lib/tp2/http1_adapter.rb +14 -10
- data/lib/tp2/version.rb +1 -1
- data/tp2.gemspec +3 -3
- metadata +7 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 73f9fa79516460ea4b1c6226f2969fe0af0b394df2beec87263d94c75d9879f0
|
4
|
+
data.tar.gz: bbb636a70ec52928b55841ba8476ae59bdf585c4e15ae5d469b2e936787933ce
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 06f10bbc8c78af9a5cb0ff9dae4058a865144499f825b4d0a5496dab772ee9987750f0afed2eed392104007739498ae8e00a81bd27719910531cb03a6e283acc
|
7
|
+
data.tar.gz: e9dfa954dc71eaea7a6953c9896eaf40ed0ebd1c69883f482fc007a29c650382297b359308bdf27b0ea881c117828bda13b3fc457ebb306e0e16489f7f52ab30
|
data/CHANGELOG.md
CHANGED
data/bin/tp2
CHANGED
data/lib/tp2/http1_adapter.rb
CHANGED
@@ -32,6 +32,8 @@ module TP2
|
|
32
32
|
# we're done
|
33
33
|
when SystemCallError
|
34
34
|
@opts[:log]&.log("Encountered #{e.class}, closing connection")
|
35
|
+
when ProtocolError
|
36
|
+
@opts[:log]&.log("Protocol error (#{e.message}), closing connection")
|
35
37
|
when StandardError
|
36
38
|
@opts[:log]&.log("Unhandled exception #{e.class}: #{e.message}, closing connection")
|
37
39
|
@opts[:log]&.log(e.backtrace.join("\n"))
|
@@ -128,6 +130,9 @@ module TP2
|
|
128
130
|
@response_headers = headers
|
129
131
|
end
|
130
132
|
|
133
|
+
EMPTY_CHUNK = "0\r\n\r\n"
|
134
|
+
EMPTY_CHUNK_LEN = EMPTY_CHUNK.bytesize
|
135
|
+
|
131
136
|
# Sends a response body chunk. If no headers were sent, default headers are
|
132
137
|
# sent using #send_headers. if the done option is true(thy), an empty chunk
|
133
138
|
# will be sent to signal response completion to the client.
|
@@ -138,7 +143,7 @@ module TP2
|
|
138
143
|
def send_chunk(request, chunk, done: false)
|
139
144
|
data = +''
|
140
145
|
data << "#{chunk.bytesize.to_s(16)}\r\n#{chunk}\r\n" if chunk
|
141
|
-
data <<
|
146
|
+
data << EMPTY_CHUNK if done
|
142
147
|
return if data.empty?
|
143
148
|
|
144
149
|
request.tx_incr(data.bytesize)
|
@@ -149,9 +154,6 @@ module TP2
|
|
149
154
|
end
|
150
155
|
end
|
151
156
|
|
152
|
-
EMPTY_CHUNK = "0\r\n\r\n"
|
153
|
-
EMPTY_CHUNK_LEN = EMPTY_CHUNK.bytesize
|
154
|
-
|
155
157
|
# Finishes the response to the current request. If no headers were sent,
|
156
158
|
# default headers are sent using #send_headers.
|
157
159
|
# @return [void]
|
@@ -207,11 +209,12 @@ module TP2
|
|
207
209
|
|
208
210
|
request_headers = request.headers
|
209
211
|
str = format(
|
210
|
-
"%<method>s %<
|
211
|
-
|
212
|
-
|
213
|
-
|
214
|
-
|
212
|
+
"%<client_ip>s %<method>s %<uri>s %<status>s %<tx>d",
|
213
|
+
client_ip: request.forwarded_for || '?',
|
214
|
+
method: request_headers[':method'].upcase,
|
215
|
+
uri: request.full_uri,
|
216
|
+
status: @status,
|
217
|
+
tx: request_headers[':tx']
|
215
218
|
)
|
216
219
|
@opts[:log].log(str)
|
217
220
|
end
|
@@ -249,6 +252,7 @@ module TP2
|
|
249
252
|
headers[m[1].downcase] = m[2]
|
250
253
|
end
|
251
254
|
|
255
|
+
headers[':scheme'] = headers['x_forwarded_proto'] || 'http'
|
252
256
|
headers
|
253
257
|
end
|
254
258
|
|
@@ -277,7 +281,7 @@ module TP2
|
|
277
281
|
def read(len, buf = nil, raise_on_eof = true)
|
278
282
|
str = @stream.get_string(buf, len)
|
279
283
|
if !str && raise_on_eof
|
280
|
-
raise ProtocolError,
|
284
|
+
raise ProtocolError, 'Missing data'
|
281
285
|
end
|
282
286
|
|
283
287
|
str
|
data/lib/tp2/version.rb
CHANGED
data/tp2.gemspec
CHANGED
@@ -20,7 +20,7 @@ Gem::Specification.new do |s|
|
|
20
20
|
s.required_ruby_version = '>= 3.4'
|
21
21
|
s.executables = ['tp2']
|
22
22
|
|
23
|
-
s.add_dependency 'uringmachine', '
|
24
|
-
s.add_dependency 'qeweney', '0.21'
|
25
|
-
s.add_dependency 'rack', '3.1.15'
|
23
|
+
s.add_dependency 'uringmachine', '~> 0.14'
|
24
|
+
s.add_dependency 'qeweney', '~> 0.21'
|
25
|
+
s.add_dependency 'rack', '~> 3.1.15'
|
26
26
|
end
|
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:
|
4
|
+
version: 0.11.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
@@ -13,42 +13,42 @@ dependencies:
|
|
13
13
|
name: uringmachine
|
14
14
|
requirement: !ruby/object:Gem::Requirement
|
15
15
|
requirements:
|
16
|
-
- - "
|
16
|
+
- - "~>"
|
17
17
|
- !ruby/object:Gem::Version
|
18
18
|
version: '0.14'
|
19
19
|
type: :runtime
|
20
20
|
prerelease: false
|
21
21
|
version_requirements: !ruby/object:Gem::Requirement
|
22
22
|
requirements:
|
23
|
-
- - "
|
23
|
+
- - "~>"
|
24
24
|
- !ruby/object:Gem::Version
|
25
25
|
version: '0.14'
|
26
26
|
- !ruby/object:Gem::Dependency
|
27
27
|
name: qeweney
|
28
28
|
requirement: !ruby/object:Gem::Requirement
|
29
29
|
requirements:
|
30
|
-
- -
|
30
|
+
- - "~>"
|
31
31
|
- !ruby/object:Gem::Version
|
32
32
|
version: '0.21'
|
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
39
|
version: '0.21'
|
40
40
|
- !ruby/object:Gem::Dependency
|
41
41
|
name: rack
|
42
42
|
requirement: !ruby/object:Gem::Requirement
|
43
43
|
requirements:
|
44
|
-
- -
|
44
|
+
- - "~>"
|
45
45
|
- !ruby/object:Gem::Version
|
46
46
|
version: 3.1.15
|
47
47
|
type: :runtime
|
48
48
|
prerelease: false
|
49
49
|
version_requirements: !ruby/object:Gem::Requirement
|
50
50
|
requirements:
|
51
|
-
- -
|
51
|
+
- - "~>"
|
52
52
|
- !ruby/object:Gem::Version
|
53
53
|
version: 3.1.15
|
54
54
|
email: sharon@noteflakes.com
|