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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b97ec9f81c0bb5aa55cc42ec96cc349f21c0bb88ebfe907300f58841e8bdcf4a
4
- data.tar.gz: 48c9d21e5d2d4a7fe3d360dde8623deac46c0ddf0efccf94a1543c06e4bf7770
3
+ metadata.gz: 73f9fa79516460ea4b1c6226f2969fe0af0b394df2beec87263d94c75d9879f0
4
+ data.tar.gz: bbb636a70ec52928b55841ba8476ae59bdf585c4e15ae5d469b2e936787933ce
5
5
  SHA512:
6
- metadata.gz: 9fb4edb4db18989e6a218e15ed81543cf671ca5c925da3e134673fd93832b34c6345c5782b836b8e7f672492a53f73c0c0f83c832c4639beb00da5936f95dcee
7
- data.tar.gz: 4cd296f4c7dd5ae7b72367a1f829589eaab29a3d0bacfff9c973cdfe82f78894c6da96819528421672537f6a308da4e3258290b4afb20b9631b7348a9dbb2379
6
+ metadata.gz: 06f10bbc8c78af9a5cb0ff9dae4058a865144499f825b4d0a5496dab772ee9987750f0afed2eed392104007739498ae8e00a81bd27719910531cb03a6e283acc
7
+ data.tar.gz: e9dfa954dc71eaea7a6953c9896eaf40ed0ebd1c69883f482fc007a29c650382297b359308bdf27b0ea881c117828bda13b3fc457ebb306e0e16489f7f52ab30
data/CHANGELOG.md CHANGED
@@ -1,3 +1,12 @@
1
+ # Version 0.11.1 2025-06-15
2
+
3
+ - Add more info to log
4
+
5
+ # Version 0.11 2025-06-13
6
+
7
+ - Improve logging for protocol errors
8
+ - Enable YJIT when running bin/tp2
9
+
1
10
  # Version 0.10 2025-06-10
2
11
 
3
12
  - Fix static file serving
data/bin/tp2 CHANGED
@@ -90,4 +90,5 @@ end
90
90
 
91
91
  detect_app(opts) if !opts[:app_type]
92
92
 
93
+ RubyVM::YJIT.enable rescue nil
93
94
  TP2.run(opts)
@@ -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 << "0\r\n\r\n" if done
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 %<path>s %<status>s %<tx>d",
211
- method: request_headers[':method'].upcase,
212
- path: request_headers[':path'],
213
- status: @status,
214
- tx: request_headers[':tx']
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, "Missing data"
284
+ raise ProtocolError, 'Missing data'
281
285
  end
282
286
 
283
287
  str
data/lib/tp2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TP2
2
- VERSION = '0.10'
2
+ VERSION = '0.11.1'
3
3
  end
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', '>=0.14'
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: '0.10'
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