tp2 0.12.3.1 → 0.13
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 +5 -0
- data/examples/app.rb +1 -0
- data/lib/tp2/http1_connection.rb +12 -4
- data/lib/tp2/logger.rb +13 -7
- data/lib/tp2/version.rb +1 -1
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 1a439c912a6726db661e6911ce5cc5cb89a10df9052f2be041edf5f98bbb48d1
|
4
|
+
data.tar.gz: 23e305d5e630d336c755148d81c806450b17b1e01465e701d3cbb92b4fac8e80
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 440aec3cb21f79785fee1a45e3d03ba2612bd1a7567b9e7c597c7a6a933f63ea60b200877ecc1296013d27236b1652139b64182aecd34f091e495affa17db16a
|
7
|
+
data.tar.gz: 688319dc5c58364f778129746f934cabb2b444e0594f8d0e33d97ca8a20b658419ccc52fb9410fd3c4dc11fbb8d1d595417b421c01fce5a0e631c72f35fd1737
|
data/CHANGELOG.md
CHANGED
data/examples/app.rb
CHANGED
data/lib/tp2/http1_connection.rb
CHANGED
@@ -11,6 +11,7 @@ module TP2
|
|
11
11
|
@machine = machine
|
12
12
|
@fd = fd
|
13
13
|
@opts = opts
|
14
|
+
@logger = opts[:logger]
|
14
15
|
@stream = UM::Stream.new(machine, fd)
|
15
16
|
@app = app
|
16
17
|
|
@@ -29,7 +30,7 @@ module TP2
|
|
29
30
|
rescue UM::Terminate, SystemCallError
|
30
31
|
# we're done, we don't care about broken socket
|
31
32
|
rescue StandardError => e
|
32
|
-
@
|
33
|
+
@logger&.call(e)
|
33
34
|
ensure
|
34
35
|
@machine.close_async(@fd)
|
35
36
|
end
|
@@ -45,6 +46,13 @@ module TP2
|
|
45
46
|
rescue ProtocolError
|
46
47
|
# TODO: add hook for testing protocol errors
|
47
48
|
false
|
49
|
+
rescue StandardError => e
|
50
|
+
msg = "Internal error while serving request: #{e.message} (#{e.backtrace.inspect})"
|
51
|
+
@logger&.call(msg)
|
52
|
+
if request && !@done
|
53
|
+
respond(request, 'Internal server error', ':status' => Qeweney::Status::INTERNAL_SERVER_ERROR)
|
54
|
+
end
|
55
|
+
false
|
48
56
|
end
|
49
57
|
|
50
58
|
def get_body(req)
|
@@ -104,7 +112,7 @@ module TP2
|
|
104
112
|
else
|
105
113
|
@machine.send(@fd, formatted_headers, formatted_headers.bytesize, SEND_FLAGS)
|
106
114
|
end
|
107
|
-
@
|
115
|
+
@logger&.call(request, headers)
|
108
116
|
@done = true
|
109
117
|
@response_headers = headers
|
110
118
|
end
|
@@ -143,7 +151,7 @@ module TP2
|
|
143
151
|
@machine.send(@fd, data, data.bytesize, SEND_FLAGS)
|
144
152
|
return if @done || !done
|
145
153
|
|
146
|
-
@
|
154
|
+
@logger&.call(request, @response_headers)
|
147
155
|
@done = true
|
148
156
|
end
|
149
157
|
|
@@ -155,7 +163,7 @@ module TP2
|
|
155
163
|
@machine.send(@fd, EMPTY_CHUNK, EMPTY_CHUNK_LEN, SEND_FLAGS)
|
156
164
|
return if @done
|
157
165
|
|
158
|
-
@
|
166
|
+
@logger&.call(request, @response_headers)
|
159
167
|
@done = true
|
160
168
|
end
|
161
169
|
|
data/lib/tp2/logger.rb
CHANGED
@@ -17,16 +17,22 @@ module TP2
|
|
17
17
|
@machine.write_async(@fd, str)
|
18
18
|
end
|
19
19
|
|
20
|
-
|
21
|
-
|
20
|
+
# @param o <Qeweney::Request> request
|
21
|
+
# @param h <Hash, nil> response headers
|
22
|
+
def call(o, h = nil)
|
23
|
+
log(format_log_line(o, h))
|
24
|
+
rescue => e
|
25
|
+
p e: e
|
26
|
+
p e.backtrace
|
27
|
+
exit!
|
22
28
|
end
|
23
29
|
|
24
|
-
def format_log_line(o)
|
30
|
+
def format_log_line(o, h)
|
25
31
|
case o
|
26
32
|
when Exception
|
27
33
|
format_error_log_line(o)
|
28
34
|
when Qeweney::Request
|
29
|
-
format_request_log_line(o)
|
35
|
+
format_request_log_line(o, h)
|
30
36
|
when String
|
31
37
|
o
|
32
38
|
else
|
@@ -38,16 +44,16 @@ module TP2
|
|
38
44
|
"Error: #{err.inspect}: #{err.backtrace.inspect}"
|
39
45
|
end
|
40
46
|
|
41
|
-
def format_request_log_line(request)
|
47
|
+
def format_request_log_line(request, response_headers)
|
42
48
|
request_headers = request.headers
|
43
49
|
uri = full_uri(request_headers)
|
44
|
-
|
50
|
+
status = response_headers[':status'] || '200'
|
45
51
|
format(
|
46
52
|
'%<client_ip>s %<method>s %<uri>s %<status>s %<tx>d',
|
47
53
|
client_ip: request.forwarded_for || '?',
|
48
54
|
method: request_headers[':method'].upcase,
|
49
55
|
uri: uri,
|
50
|
-
status:
|
56
|
+
status: status,
|
51
57
|
tx: request_headers[':tx']
|
52
58
|
)
|
53
59
|
end
|
data/lib/tp2/version.rb
CHANGED