tipi 0.37 → 0.37.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/Gemfile.lock +5 -5
- data/TODO.md +3 -5
- data/lib/tipi/http1_adapter.rb +8 -6
- data/lib/tipi/http2_stream.rb +1 -1
- data/lib/tipi/version.rb +1 -1
- data/test/test_http_server.rb +2 -1
- data/tipi.gemspec +2 -2
- metadata +6 -6
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 46b961262c4d31ce6e479864bced5b698f77e757f60e93a9dff8ba7401f2fa0d
|
4
|
+
data.tar.gz: 23881ff338c0b7aeaea31a7700ed08271eca7349322fb1868246c1541386c2b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: ccb684d646130d74292809c1c3080f5c4280d260ae38da119813d9137e84278dfe61cf7471512353b95ea36ced2bb2913fd23695e1b3ce549a17a66d243c1bd6
|
7
|
+
data.tar.gz: fe7e6ed4c6b10ae4d409edbf9e3a105d49763cccc6c8ed81f42af5b7a903b45f53548bff830a63051c5626cd107fe169538bba08b83f8a26adf5b36f51a4f070
|
data/Gemfile.lock
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
PATH
|
2
2
|
remote: .
|
3
3
|
specs:
|
4
|
-
tipi (0.37)
|
4
|
+
tipi (0.37.1)
|
5
5
|
http-2 (~> 0.10.0)
|
6
6
|
http_parser.rb (~> 0.6.0)
|
7
7
|
msgpack (~> 1.4.2)
|
8
|
-
polyphony (~> 0.
|
9
|
-
qeweney (~> 0.
|
8
|
+
polyphony (~> 0.52.0)
|
9
|
+
qeweney (~> 0.6)
|
10
10
|
rack (>= 2.0.8, < 2.3.0)
|
11
11
|
websocket (~> 1.2.8)
|
12
12
|
|
@@ -28,8 +28,8 @@ GEM
|
|
28
28
|
minitest (>= 5.0)
|
29
29
|
ruby-progressbar
|
30
30
|
msgpack (1.4.2)
|
31
|
-
polyphony (0.
|
32
|
-
qeweney (0.
|
31
|
+
polyphony (0.52.0)
|
32
|
+
qeweney (0.6)
|
33
33
|
escape_utils (~> 1.2.1)
|
34
34
|
rack (2.2.3)
|
35
35
|
rake (12.3.3)
|
data/TODO.md
CHANGED
@@ -1,8 +1,6 @@
|
|
1
|
-
|
1
|
+
For immediate execution:
|
2
2
|
|
3
|
-
Problems to fix:
|
4
3
|
|
5
|
-
- Memory leak (in server? multi agent? multi client?)
|
6
4
|
|
7
5
|
# Roadmap
|
8
6
|
|
@@ -14,7 +12,7 @@ Problems to fix:
|
|
14
12
|
- https://gitlab.com/honeyryderchuck/http-2-next
|
15
13
|
- Open an issue there, ask what's the difference between the two gems?
|
16
14
|
|
17
|
-
## 0.
|
15
|
+
## 0.38
|
18
16
|
|
19
17
|
- Add more poly CLI commands and options:
|
20
18
|
|
@@ -26,7 +24,7 @@ Problems to fix:
|
|
26
24
|
- set port to bind to
|
27
25
|
- set forking process count
|
28
26
|
|
29
|
-
## 0.
|
27
|
+
## 0.39 Working Sinatra application
|
30
28
|
|
31
29
|
- app with database access (postgresql)
|
32
30
|
- benchmarks!
|
data/lib/tipi/http1_adapter.rb
CHANGED
@@ -197,15 +197,17 @@ module Tipi
|
|
197
197
|
# @param headers
|
198
198
|
def respond(body, headers)
|
199
199
|
consume_request if @parsing
|
200
|
-
data = format_headers(headers, body)
|
200
|
+
data = [format_headers(headers, body)]
|
201
201
|
if body
|
202
202
|
if @parser.http_minor == 0
|
203
203
|
data << body
|
204
204
|
else
|
205
|
-
data << body.bytesize.to_s(16) << CRLF << body << CRLF_ZERO_CRLF_CRLF
|
205
|
+
# data << body.bytesize.to_s(16) << CRLF << body << CRLF_ZERO_CRLF_CRLF
|
206
|
+
data << "#{body.bytesize.to_s(16)}\r\n#{body}\r\n0\r\n\r\n"
|
206
207
|
end
|
207
208
|
end
|
208
|
-
@conn
|
209
|
+
# Polyphony.backend_sendv(@conn, data, 0)
|
210
|
+
@conn.write(*data)
|
209
211
|
end
|
210
212
|
|
211
213
|
DEFAULT_HEADERS_OPTS = {
|
@@ -220,7 +222,7 @@ module Tipi
|
|
220
222
|
# @return [void]
|
221
223
|
def send_headers(headers, opts = DEFAULT_HEADERS_OPTS)
|
222
224
|
data = format_headers(headers, true)
|
223
|
-
@conn.write(data
|
225
|
+
@conn.write(data)
|
224
226
|
end
|
225
227
|
|
226
228
|
# Sends a response body chunk. If no headers were sent, default headers are
|
@@ -233,7 +235,7 @@ module Tipi
|
|
233
235
|
data = []
|
234
236
|
data << "#{chunk.bytesize.to_s(16)}\r\n#{chunk}\r\n" if chunk
|
235
237
|
data << "0\r\n\r\n" if done
|
236
|
-
@conn.write(data.join)
|
238
|
+
@conn.write(data.join) unless data.empty?
|
237
239
|
end
|
238
240
|
|
239
241
|
# Finishes the response to the current request. If no headers were sent,
|
@@ -257,7 +259,7 @@ module Tipi
|
|
257
259
|
def format_headers(headers, body)
|
258
260
|
status = headers[':status']
|
259
261
|
status ||= (body ? Qeweney::Status::OK : Qeweney::Status::NO_CONTENT)
|
260
|
-
lines =
|
262
|
+
lines = format_status_line(body, status)
|
261
263
|
headers.each do |k, v|
|
262
264
|
next if k =~ /^:/
|
263
265
|
|
data/lib/tipi/http2_stream.rb
CHANGED
data/lib/tipi/version.rb
CHANGED
data/test/test_http_server.rb
CHANGED
@@ -210,7 +210,8 @@ class HTTP1ServerTest < MiniTest::Test
|
|
210
210
|
|
211
211
|
opts = {
|
212
212
|
upgrade: {
|
213
|
-
echo: lambda do |
|
213
|
+
echo: lambda do |adapter, _headers|
|
214
|
+
conn = adapter.conn
|
214
215
|
conn << <<~HTTP.http_lines
|
215
216
|
HTTP/1.1 101 Switching Protocols
|
216
217
|
Upgrade: echo
|
data/tipi.gemspec
CHANGED
@@ -19,8 +19,8 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.executables = ['tipi']
|
21
21
|
|
22
|
-
s.add_runtime_dependency 'polyphony', '~>0.
|
23
|
-
s.add_runtime_dependency 'qeweney', '~>0.
|
22
|
+
s.add_runtime_dependency 'polyphony', '~>0.52.0'
|
23
|
+
s.add_runtime_dependency 'qeweney', '~>0.6'
|
24
24
|
|
25
25
|
s.add_runtime_dependency 'http_parser.rb', '~>0.6.0'
|
26
26
|
s.add_runtime_dependency 'http-2', '~>0.10.0'
|
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:
|
4
|
+
version: 0.37.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Sharon Rosner
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2021-
|
11
|
+
date: 2021-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: polyphony
|
@@ -16,28 +16,28 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 0.
|
19
|
+
version: 0.52.0
|
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.
|
26
|
+
version: 0.52.0
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: qeweney
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
30
30
|
requirements:
|
31
31
|
- - "~>"
|
32
32
|
- !ruby/object:Gem::Version
|
33
|
-
version: '0.
|
33
|
+
version: '0.6'
|
34
34
|
type: :runtime
|
35
35
|
prerelease: false
|
36
36
|
version_requirements: !ruby/object:Gem::Requirement
|
37
37
|
requirements:
|
38
38
|
- - "~>"
|
39
39
|
- !ruby/object:Gem::Version
|
40
|
-
version: '0.
|
40
|
+
version: '0.6'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
42
|
name: http_parser.rb
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|