tipi 0.42 → 0.47

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.
Files changed (62) hide show
  1. checksums.yaml +4 -4
  2. data/.github/FUNDING.yml +1 -0
  3. data/.github/workflows/test.yml +1 -3
  4. data/CHANGELOG.md +27 -0
  5. data/Gemfile +3 -1
  6. data/Gemfile.lock +35 -29
  7. data/README.md +184 -8
  8. data/Rakefile +1 -7
  9. data/benchmarks/bm_http1_parser.rb +45 -21
  10. data/bin/benchmark +0 -0
  11. data/bin/h1pd +0 -0
  12. data/bm.png +0 -0
  13. data/df/agent.rb +1 -1
  14. data/df/sample_agent.rb +2 -2
  15. data/df/server.rb +2 -0
  16. data/df/server_utils.rb +12 -15
  17. data/examples/hello.rb +5 -0
  18. data/examples/hello.ru +3 -3
  19. data/examples/http_server.js +1 -1
  20. data/examples/http_server_graceful.rb +1 -1
  21. data/examples/https_server.rb +41 -18
  22. data/examples/rack_server_forked.rb +26 -0
  23. data/examples/rack_server_https_forked.rb +1 -1
  24. data/examples/websocket_demo.rb +1 -1
  25. data/lib/tipi/acme.rb +51 -39
  26. data/lib/tipi/cli.rb +79 -16
  27. data/lib/tipi/config_dsl.rb +13 -13
  28. data/lib/tipi/configuration.rb +2 -2
  29. data/lib/tipi/controller/bare_polyphony.rb +0 -0
  30. data/lib/tipi/controller/bare_stock.rb +10 -0
  31. data/lib/tipi/controller/extensions.rb +37 -0
  32. data/lib/tipi/controller/stock_http1_adapter.rb +15 -0
  33. data/lib/tipi/controller/web_polyphony.rb +353 -0
  34. data/lib/tipi/controller/web_stock.rb +635 -0
  35. data/lib/tipi/controller.rb +12 -0
  36. data/lib/tipi/digital_fabric/agent.rb +3 -3
  37. data/lib/tipi/digital_fabric/agent_proxy.rb +11 -5
  38. data/lib/tipi/digital_fabric/executive.rb +1 -1
  39. data/lib/tipi/digital_fabric/protocol.rb +1 -1
  40. data/lib/tipi/digital_fabric/service.rb +12 -8
  41. data/lib/tipi/handler.rb +2 -2
  42. data/lib/tipi/http1_adapter.rb +36 -30
  43. data/lib/tipi/http2_adapter.rb +10 -10
  44. data/lib/tipi/http2_stream.rb +14 -15
  45. data/lib/tipi/rack_adapter.rb +2 -2
  46. data/lib/tipi/response_extensions.rb +1 -1
  47. data/lib/tipi/supervisor.rb +75 -0
  48. data/lib/tipi/version.rb +1 -1
  49. data/lib/tipi/websocket.rb +3 -3
  50. data/lib/tipi.rb +4 -83
  51. data/test/coverage.rb +2 -2
  52. data/test/helper.rb +0 -1
  53. data/test/test_http_server.rb +14 -14
  54. data/test/test_request.rb +1 -1
  55. data/tipi.gemspec +6 -7
  56. metadata +58 -53
  57. data/ext/tipi/extconf.rb +0 -13
  58. data/ext/tipi/http1_parser.c +0 -823
  59. data/ext/tipi/http1_parser.h +0 -18
  60. data/ext/tipi/tipi_ext.c +0 -5
  61. data/security/http1.rb +0 -12
  62. data/test/test_http1_parser.rb +0 -586
data/lib/tipi.rb CHANGED
@@ -17,7 +17,7 @@ end
17
17
  module Tipi
18
18
  ALPN_PROTOCOLS = %w[h2 http/1.1].freeze
19
19
  H2_PROTOCOL = 'h2'
20
-
20
+
21
21
  class << self
22
22
  def serve(host, port, opts = {}, &handler)
23
23
  opts[:alpn_protocols] = ALPN_PROTOCOLS
@@ -26,7 +26,7 @@ module Tipi
26
26
  ensure
27
27
  server&.close
28
28
  end
29
-
29
+
30
30
  def listen(host, port, opts = {})
31
31
  opts[:alpn_protocols] = ALPN_PROTOCOLS
32
32
  Polyphony::Net.tcp_listen(host, port, opts).tap do |socket|
@@ -35,7 +35,7 @@ module Tipi
35
35
  end
36
36
  end
37
37
  end
38
-
38
+
39
39
  def accept_loop(server, opts, &handler)
40
40
  server.accept_loop do |client|
41
41
  spin { client_loop(client, opts, &handler) }
@@ -43,7 +43,7 @@ module Tipi
43
43
  # disregard
44
44
  end
45
45
  end
46
-
46
+
47
47
  def client_loop(client, opts, &handler)
48
48
  client.no_delay if client.respond_to?(:no_delay)
49
49
  adapter = protocol_adapter(client, opts)
@@ -62,84 +62,5 @@ module Tipi
62
62
  def route(&block)
63
63
  proc { |req| req.route(&block) }
64
64
  end
65
-
66
- CERTIFICATE_STORE_DEFAULT_DIR = File.expand_path('~/.tipi')
67
- CERTIFICATE_STORE_DEFAULT_DB_PATH = File.join(
68
- CERTIFICATE_STORE_DEFAULT_DIR, 'certificates.db'
69
- )
70
-
71
- def default_certificate_store
72
- FileUtils.mkdir(CERTIFICATE_STORE_DEFAULT_DIR) rescue nil
73
- Tipi::ACME::SQLiteCertificateStore.new(CERTIFICATE_STORE_DEFAULT_DB_PATH)
74
- end
75
-
76
- def full_service(
77
- http_port: 10080,
78
- https_port: 10443,
79
- certificate_store: default_certificate_store,
80
- app: nil, &block
81
- )
82
- app ||= block
83
- raise "No app given" unless app
84
-
85
- http_handler = ->(r) { r.redirect("https://#{r.host}#{r.path}") }
86
-
87
- ctx = OpenSSL::SSL::SSLContext.new
88
- # ctx.ciphers = 'ECDH+aRSA'
89
- Polyphony::Net.setup_alpn(ctx, Tipi::ALPN_PROTOCOLS)
90
-
91
- challenge_handler = Tipi::ACME::HTTPChallengeHandler.new
92
- certificate_manager = Tipi::ACME::CertificateManager.new(
93
- master_ctx: ctx,
94
- store: certificate_store,
95
- challenge_handler: challenge_handler
96
- )
97
-
98
- http_listener = spin do
99
- opts = {
100
- reuse_addr: true,
101
- reuse_port: true,
102
- dont_linger: true,
103
- }
104
- puts "Listening for HTTP on localhost:#{http_port}"
105
- server = Polyphony::Net.tcp_listen('0.0.0.0', http_port, opts)
106
- wrapped_handler = certificate_manager.challenge_routing_app(http_handler)
107
- server.accept_loop do |client|
108
- spin do
109
- Tipi.client_loop(client, opts, &wrapped_handler)
110
- rescue => e
111
- puts "Uncaught error in HTTP listener: #{e.inspect}"
112
- end
113
- end
114
- ensure
115
- server.close
116
- end
117
-
118
- https_listener = spin do
119
- opts = {
120
- reuse_addr: true,
121
- reuse_port: true,
122
- dont_linger: true,
123
- secure_context: ctx,
124
- }
125
-
126
- puts "Listening for HTTPS on localhost:#{https_port}"
127
- server = Polyphony::Net.tcp_listen('0.0.0.0', https_port, opts)
128
- loop do
129
- client = server.accept
130
- spin do
131
- Tipi.client_loop(client, opts, &app)
132
- rescue => e
133
- puts "Uncaught error in HTTPS listener: #{e.inspect}"
134
- end
135
- rescue OpenSSL::SSL::SSLError, SystemCallError, TypeError
136
- # ignore
137
- end
138
- ensure
139
- server.close
140
- end
141
-
142
- Fiber.await(http_listener, https_listener)
143
- end
144
65
  end
145
66
  end
data/test/coverage.rb CHANGED
@@ -26,10 +26,10 @@ module Coverage
26
26
  @result = {}
27
27
  trace = TracePoint.new(:line) do |tp|
28
28
  next if tp.path =~ /\(/
29
-
29
+
30
30
  absolute = File.expand_path(tp.path)
31
31
  next unless LIB_FILES.include?(absolute)# =~ /^#{LIB_DIR}/
32
-
32
+
33
33
  @result[absolute] ||= relevant_lines_for_filename(absolute)
34
34
  @result[absolute][tp.lineno - 1] = 1
35
35
  end
data/test/helper.rb CHANGED
@@ -8,7 +8,6 @@ require_relative './eg'
8
8
  require_relative './coverage' if ENV['COVERAGE']
9
9
 
10
10
  require 'minitest/autorun'
11
- require 'minitest/reporters'
12
11
 
13
12
  require 'polyphony'
14
13
 
@@ -4,7 +4,7 @@ require_relative 'helper'
4
4
  require 'tipi'
5
5
 
6
6
  class String
7
- def http_lines
7
+ def crlf_lines
8
8
  gsub "\n", "\r\n"
9
9
  end
10
10
  end
@@ -33,7 +33,7 @@ class HTTP1ServerTest < MiniTest::Test
33
33
  connection << "GET / HTTP/1.0\r\n\r\n"
34
34
 
35
35
  response = connection.readpartial(8192)
36
- expected = <<~HTTP.chomp.http_lines.chomp
36
+ expected = <<~HTTP.chomp.crlf_lines.chomp
37
37
  HTTP/1.1 200
38
38
  Content-Length: 13
39
39
 
@@ -51,7 +51,7 @@ class HTTP1ServerTest < MiniTest::Test
51
51
  connection << "GET / HTTP/1.1\r\n\r\n"
52
52
 
53
53
  response = connection.readpartial(8192)
54
- expected = <<~HTTP.http_lines.chomp
54
+ expected = <<~HTTP.crlf_lines.chomp
55
55
  HTTP/1.1 200
56
56
  Content-Length: 13
57
57
 
@@ -73,7 +73,7 @@ class HTTP1ServerTest < MiniTest::Test
73
73
  connection << "GET / HTTP/1.1\r\n\r\n"
74
74
  response = connection.readpartial(8192)
75
75
  assert !connection.eof?
76
- expected = <<~HTTP.http_lines.chomp
76
+ expected = <<~HTTP.crlf_lines.chomp
77
77
  HTTP/1.1 200
78
78
  Content-Length: 2
79
79
 
@@ -100,7 +100,7 @@ class HTTP1ServerTest < MiniTest::Test
100
100
  sleep 0.01
101
101
  response = connection.readpartial(8192)
102
102
 
103
- expected = <<~HTTP.http_lines.chomp
103
+ expected = <<~HTTP.crlf_lines.chomp
104
104
  HTTP/1.1 200
105
105
  Content-Length: 13
106
106
 
@@ -125,7 +125,7 @@ class HTTP1ServerTest < MiniTest::Test
125
125
  req.finish
126
126
  end
127
127
 
128
- connection << <<~HTTP.http_lines
128
+ connection << <<~HTTP.crlf_lines
129
129
  POST / HTTP/1.1
130
130
  Transfer-Encoding: chunked
131
131
 
@@ -151,7 +151,7 @@ class HTTP1ServerTest < MiniTest::Test
151
151
 
152
152
  response = connection.readpartial(8192)
153
153
 
154
- expected = <<~HTTP.http_lines
154
+ expected = <<~HTTP.crlf_lines
155
155
  HTTP/1.1 200
156
156
  Transfer-Encoding: chunked
157
157
 
@@ -172,7 +172,7 @@ class HTTP1ServerTest < MiniTest::Test
172
172
  upgrade: {
173
173
  echo: lambda do |adapter, _headers|
174
174
  conn = adapter.conn
175
- conn << <<~HTTP.http_lines
175
+ conn << <<~HTTP.crlf_lines
176
176
  HTTP/1.1 101 Switching Protocols
177
177
  Upgrade: echo
178
178
  Connection: Upgrade
@@ -192,7 +192,7 @@ class HTTP1ServerTest < MiniTest::Test
192
192
  connection << "GET / HTTP/1.1\r\n\r\n"
193
193
  response = connection.readpartial(8192)
194
194
  assert !connection.eof?
195
- expected = <<~HTTP.http_lines.chomp
195
+ expected = <<~HTTP.crlf_lines.chomp
196
196
  HTTP/1.1 200
197
197
  Content-Length: 2
198
198
 
@@ -200,7 +200,7 @@ class HTTP1ServerTest < MiniTest::Test
200
200
  HTTP
201
201
  assert_equal(expected, response)
202
202
 
203
- connection << <<~HTTP.http_lines
203
+ connection << <<~HTTP.crlf_lines
204
204
  GET / HTTP/1.1
205
205
  Upgrade: echo
206
206
  Connection: upgrade
@@ -210,7 +210,7 @@ class HTTP1ServerTest < MiniTest::Test
210
210
  snooze
211
211
  response = connection.readpartial(8192)
212
212
  assert !connection.eof?
213
- expected = <<~HTTP.http_lines
213
+ expected = <<~HTTP.crlf_lines
214
214
  HTTP/1.1 101 Switching Protocols
215
215
  Upgrade: echo
216
216
  Connection: Upgrade
@@ -228,7 +228,7 @@ class HTTP1ServerTest < MiniTest::Test
228
228
 
229
229
  connection.close
230
230
  assert !done
231
-
231
+
232
232
  sleep 0.01
233
233
  assert done
234
234
  end
@@ -251,7 +251,7 @@ class HTTP1ServerTest < MiniTest::Test
251
251
  count = 0
252
252
 
253
253
  connection << "GET / HTTP/1.1\r\n\r\n"
254
-
254
+
255
255
  while (data = connection.read(chunk_size))
256
256
  response << data
257
257
  count += 1
@@ -259,7 +259,7 @@ class HTTP1ServerTest < MiniTest::Test
259
259
  end
260
260
 
261
261
  chunks = "#{chunk_size.to_s(16)}\n#{'*' * chunk_size}\n" * chunk_count
262
- expected = <<~HTTP.http_lines
262
+ expected = <<~HTTP.crlf_lines
263
263
  HTTP/1.1 200
264
264
  Transfer-Encoding: chunked
265
265
 
data/test/test_request.rb CHANGED
@@ -39,7 +39,7 @@ class RequestHeadersTest < MiniTest::Test
39
39
  assert_equal 'blah.com', req.headers['host']
40
40
  assert_equal 'bar', req.headers['foo']
41
41
  assert_equal ['1', '2', '3'], req.headers['hi']
42
- assert_equal 'get', req.headers[':method']
42
+ assert_equal 'GET', req.headers[':method']
43
43
  assert_equal '/titi', req.headers[':path']
44
44
  end
45
45
 
data/tipi.gemspec CHANGED
@@ -14,16 +14,17 @@ Gem::Specification.new do |s|
14
14
  }
15
15
  s.rdoc_options = ["--title", "tipi", "--main", "README.md"]
16
16
  s.extra_rdoc_files = ["README.md"]
17
- s.extensions = ["ext/tipi/extconf.rb"]
18
17
  s.require_paths = ["lib"]
19
18
  s.required_ruby_version = '>= 2.6'
20
19
 
21
20
  s.executables = ['tipi']
22
21
 
23
- s.add_runtime_dependency 'polyphony', '~>0.69'
22
+ s.add_runtime_dependency 'polyphony', '~>0.71'
23
+ s.add_runtime_dependency 'ever', '~>0.1'
24
24
  s.add_runtime_dependency 'qeweney', '~>0.14'
25
25
  s.add_runtime_dependency 'extralite', '~>1.2'
26
-
26
+ s.add_runtime_dependency 'h1p', '~>0.3'
27
+
27
28
  s.add_runtime_dependency 'http-2', '~>0.11'
28
29
  s.add_runtime_dependency 'rack', '>=2.0.8', '<2.3.0'
29
30
  s.add_runtime_dependency 'websocket', '~>1.2.8'
@@ -33,12 +34,10 @@ Gem::Specification.new do |s|
33
34
  # for digital fabric
34
35
  s.add_runtime_dependency 'msgpack', '~>1.4.2'
35
36
 
36
- s.add_development_dependency 'rake-compiler', '1.1.1'
37
- s.add_development_dependency 'rake', '~>12.3.3'
37
+ s.add_development_dependency 'rake', '~>13.0.6'
38
38
  s.add_development_dependency 'minitest', '~>5.11.3'
39
- s.add_development_dependency 'minitest-reporters', '~>1.4.2'
40
39
  s.add_development_dependency 'simplecov', '~>0.17.1'
40
+ s.add_development_dependency 'memory_profiler', '~>1.0.0'
41
41
 
42
42
  s.add_development_dependency 'cuba', '~>3.9.3'
43
- s.add_development_dependency 'http_parser.rb', '0.7.0'
44
43
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: tipi
3
3
  version: !ruby/object:Gem::Version
4
- version: '0.42'
4
+ version: '0.47'
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-08-16 00:00:00.000000000 Z
11
+ date: 2022-02-03 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: polyphony
@@ -16,14 +16,28 @@ dependencies:
16
16
  requirements:
17
17
  - - "~>"
18
18
  - !ruby/object:Gem::Version
19
- version: '0.69'
19
+ version: '0.71'
20
20
  type: :runtime
21
21
  prerelease: false
22
22
  version_requirements: !ruby/object:Gem::Requirement
23
23
  requirements:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
- version: '0.69'
26
+ version: '0.71'
27
+ - !ruby/object:Gem::Dependency
28
+ name: ever
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.1'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.1'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: qeweney
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -52,6 +66,20 @@ dependencies:
52
66
  - - "~>"
53
67
  - !ruby/object:Gem::Version
54
68
  version: '1.2'
69
+ - !ruby/object:Gem::Dependency
70
+ name: h1p
71
+ requirement: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - "~>"
74
+ - !ruby/object:Gem::Version
75
+ version: '0.3'
76
+ type: :runtime
77
+ prerelease: false
78
+ version_requirements: !ruby/object:Gem::Requirement
79
+ requirements:
80
+ - - "~>"
81
+ - !ruby/object:Gem::Version
82
+ version: '0.3'
55
83
  - !ruby/object:Gem::Dependency
56
84
  name: http-2
57
85
  requirement: !ruby/object:Gem::Requirement
@@ -142,34 +170,20 @@ dependencies:
142
170
  - - "~>"
143
171
  - !ruby/object:Gem::Version
144
172
  version: 1.4.2
145
- - !ruby/object:Gem::Dependency
146
- name: rake-compiler
147
- requirement: !ruby/object:Gem::Requirement
148
- requirements:
149
- - - '='
150
- - !ruby/object:Gem::Version
151
- version: 1.1.1
152
- type: :development
153
- prerelease: false
154
- version_requirements: !ruby/object:Gem::Requirement
155
- requirements:
156
- - - '='
157
- - !ruby/object:Gem::Version
158
- version: 1.1.1
159
173
  - !ruby/object:Gem::Dependency
160
174
  name: rake
161
175
  requirement: !ruby/object:Gem::Requirement
162
176
  requirements:
163
177
  - - "~>"
164
178
  - !ruby/object:Gem::Version
165
- version: 12.3.3
179
+ version: 13.0.6
166
180
  type: :development
167
181
  prerelease: false
168
182
  version_requirements: !ruby/object:Gem::Requirement
169
183
  requirements:
170
184
  - - "~>"
171
185
  - !ruby/object:Gem::Version
172
- version: 12.3.3
186
+ version: 13.0.6
173
187
  - !ruby/object:Gem::Dependency
174
188
  name: minitest
175
189
  requirement: !ruby/object:Gem::Requirement
@@ -185,33 +199,33 @@ dependencies:
185
199
  - !ruby/object:Gem::Version
186
200
  version: 5.11.3
187
201
  - !ruby/object:Gem::Dependency
188
- name: minitest-reporters
202
+ name: simplecov
189
203
  requirement: !ruby/object:Gem::Requirement
190
204
  requirements:
191
205
  - - "~>"
192
206
  - !ruby/object:Gem::Version
193
- version: 1.4.2
207
+ version: 0.17.1
194
208
  type: :development
195
209
  prerelease: false
196
210
  version_requirements: !ruby/object:Gem::Requirement
197
211
  requirements:
198
212
  - - "~>"
199
213
  - !ruby/object:Gem::Version
200
- version: 1.4.2
214
+ version: 0.17.1
201
215
  - !ruby/object:Gem::Dependency
202
- name: simplecov
216
+ name: memory_profiler
203
217
  requirement: !ruby/object:Gem::Requirement
204
218
  requirements:
205
219
  - - "~>"
206
220
  - !ruby/object:Gem::Version
207
- version: 0.17.1
221
+ version: 1.0.0
208
222
  type: :development
209
223
  prerelease: false
210
224
  version_requirements: !ruby/object:Gem::Requirement
211
225
  requirements:
212
226
  - - "~>"
213
227
  - !ruby/object:Gem::Version
214
- version: 0.17.1
228
+ version: 1.0.0
215
229
  - !ruby/object:Gem::Dependency
216
230
  name: cuba
217
231
  requirement: !ruby/object:Gem::Requirement
@@ -226,29 +240,15 @@ dependencies:
226
240
  - - "~>"
227
241
  - !ruby/object:Gem::Version
228
242
  version: 3.9.3
229
- - !ruby/object:Gem::Dependency
230
- name: http_parser.rb
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - '='
234
- - !ruby/object:Gem::Version
235
- version: 0.7.0
236
- type: :development
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - '='
241
- - !ruby/object:Gem::Version
242
- version: 0.7.0
243
- description:
243
+ description:
244
244
  email: sharon@noteflakes.com
245
245
  executables:
246
246
  - tipi
247
- extensions:
248
- - ext/tipi/extconf.rb
247
+ extensions: []
249
248
  extra_rdoc_files:
250
249
  - README.md
251
250
  files:
251
+ - ".github/FUNDING.yml"
252
252
  - ".github/workflows/test.yml"
253
253
  - ".gitignore"
254
254
  - CHANGELOG.md
@@ -262,6 +262,7 @@ files:
262
262
  - bin/benchmark
263
263
  - bin/h1pd
264
264
  - bin/tipi
265
+ - bm.png
265
266
  - df/agent.rb
266
267
  - df/etc_benchmark.rb
267
268
  - df/multi_agent_supervisor.rb
@@ -278,6 +279,7 @@ files:
278
279
  - examples/cuba.ru
279
280
  - examples/full_service.rb
280
281
  - examples/hanami-api.ru
282
+ - examples/hello.rb
281
283
  - examples/hello.ru
282
284
  - examples/http1_parser.rb
283
285
  - examples/http_request_ws_server.rb
@@ -298,6 +300,7 @@ files:
298
300
  - examples/https_server_forked.rb
299
301
  - examples/https_wss_server.rb
300
302
  - examples/rack_server.rb
303
+ - examples/rack_server_forked.rb
301
304
  - examples/rack_server_https.rb
302
305
  - examples/rack_server_https_forked.rb
303
306
  - examples/routing_server.rb
@@ -308,15 +311,18 @@ files:
308
311
  - examples/websocket_server.rb
309
312
  - examples/ws_page.html
310
313
  - examples/wss_page.html
311
- - ext/tipi/extconf.rb
312
- - ext/tipi/http1_parser.c
313
- - ext/tipi/http1_parser.h
314
- - ext/tipi/tipi_ext.c
315
314
  - lib/tipi.rb
316
315
  - lib/tipi/acme.rb
317
316
  - lib/tipi/cli.rb
318
317
  - lib/tipi/config_dsl.rb
319
318
  - lib/tipi/configuration.rb
319
+ - lib/tipi/controller.rb
320
+ - lib/tipi/controller/bare_polyphony.rb
321
+ - lib/tipi/controller/bare_stock.rb
322
+ - lib/tipi/controller/extensions.rb
323
+ - lib/tipi/controller/stock_http1_adapter.rb
324
+ - lib/tipi/controller/web_polyphony.rb
325
+ - lib/tipi/controller/web_stock.rb
320
326
  - lib/tipi/digital_fabric.rb
321
327
  - lib/tipi/digital_fabric/agent.rb
322
328
  - lib/tipi/digital_fabric/agent_proxy.rb
@@ -331,14 +337,13 @@ files:
331
337
  - lib/tipi/http2_stream.rb
332
338
  - lib/tipi/rack_adapter.rb
333
339
  - lib/tipi/response_extensions.rb
340
+ - lib/tipi/supervisor.rb
334
341
  - lib/tipi/version.rb
335
342
  - lib/tipi/websocket.rb
336
- - security/http1.rb
337
343
  - test/coverage.rb
338
344
  - test/eg.rb
339
345
  - test/helper.rb
340
346
  - test/run.rb
341
- - test/test_http1_parser.rb
342
347
  - test/test_http_server.rb
343
348
  - test/test_request.rb
344
349
  - tipi.gemspec
@@ -347,7 +352,7 @@ licenses:
347
352
  - MIT
348
353
  metadata:
349
354
  source_code_uri: https://github.com/digital-fabric/tipi
350
- post_install_message:
355
+ post_install_message:
351
356
  rdoc_options:
352
357
  - "--title"
353
358
  - tipi
@@ -366,8 +371,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
366
371
  - !ruby/object:Gem::Version
367
372
  version: '0'
368
373
  requirements: []
369
- rubygems_version: 3.1.6
370
- signing_key:
374
+ rubygems_version: 3.3.3
375
+ signing_key:
371
376
  specification_version: 4
372
377
  summary: Tipi - the All-in-one Web Server for Ruby Apps
373
378
  test_files: []
data/ext/tipi/extconf.rb DELETED
@@ -1,13 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'rubygems'
4
- require 'mkmf'
5
-
6
- require_relative '../../security/http1'
7
-
8
- $CFLAGS << " -Wno-format-security"
9
- CONFIG['optflags'] << ' -fno-strict-aliasing' unless RUBY_PLATFORM =~ /mswin/
10
- Tipi::HTTP1_LIMITS.each { |k, v| $defs << "-D#{k.upcase}=#{v}" }
11
-
12
- dir_config 'tipi_ext'
13
- create_makefile 'tipi_ext'