tp2 0.13.1 → 0.13.2

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: 80ef32c59b2f716b698809dc62ab4b1b6513ebbcb29e50ba7e8fa7fca6ff13db
4
- data.tar.gz: b22bb219f05454d2d30317fb699dca092cfbe0441d6f3cb52766cb3c396d1f7f
3
+ metadata.gz: 527cc2a7f8af120c75fa7e889ad78997a9e4cda154248f6fa5770b48afbaa148
4
+ data.tar.gz: 770630c4e47412b7f8af5379c8ae8ee23cf9c768f983fe0d9f4aaf95598f290f
5
5
  SHA512:
6
- metadata.gz: 333fad2803422c4e80cebd848b5d33e76f9c40c2bfda32850d78655dcaf5640281db129a292263fadc3d8b668293da862a732b108a390d993ba0b195e941861c
7
- data.tar.gz: b8ea7b4f49df86a877cfc133f20d7ec7e33fe7bf71d9bccc3407dbfcbb63e027ff3289450ae81aeef49e37207c94285cec410b78ea5812f49e0d900fc90f14a3
6
+ metadata.gz: 414dae69185f3dfadf66e1e7d20765d6dcdeb49dd1a5aab759346ea82603ce35bacec5de44dc82f855fba488454b8672e29b7fa4a0ea654192f696448fdcd050
7
+ data.tar.gz: 04f7b6e58da3d618975912706edc9e72247301bfceacd78acfffec469ea772cfa8273e2b614ad54b4de05f9c0a7be311b64aa7d869fbc8b0de9e55fa313be946
data/CHANGELOG.md CHANGED
@@ -1,4 +1,8 @@
1
- # Version 0.13.1 2025-07-02é
1
+ # Version 0.13.2 2025-07-03
2
+
3
+ - Improve error handling, print versions
4
+
5
+ # Version 0.13.1 2025-07-02
2
6
 
3
7
  - Give uncaught exceptions a chance
4
8
 
data/bin/tp2 CHANGED
@@ -2,6 +2,7 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  require 'tp2'
5
+ require 'uringmachine/version'
5
6
  require 'optparse'
6
7
 
7
8
  opts = {
@@ -17,7 +17,6 @@ module TP2
17
17
 
18
18
  @done = nil
19
19
  @response_headers = nil
20
- @status = nil
21
20
  end
22
21
 
23
22
  def run
@@ -27,8 +26,8 @@ module TP2
27
26
  persist = serve_request
28
27
  break if !persist
29
28
  end
30
- rescue UM::Terminate, SystemCallError
31
- # we're done, we don't care about broken socket
29
+ rescue UM::Terminate
30
+ # server is terminated, do nothing
32
31
  rescue StandardError => e
33
32
  @logger&.call(e)
34
33
  ensure
@@ -43,11 +42,12 @@ module TP2
43
42
  request = Qeweney::Request.new(headers, self)
44
43
  @app.call(request)
45
44
  persist_connection?(headers)
46
- rescue ProtocolError
47
- # TODO: add hook for testing protocol errors
45
+ rescue ProtocolError, SystemCallError => e
46
+ msg = "Error encountered while serving request: #{e.class} #{e.message}. Abandoning connection..."
47
+ @logger&.call(msg)
48
48
  false
49
49
  rescue StandardError => e
50
- msg = "Internal error while serving request: #{e.message} (#{e.backtrace.inspect})"
50
+ msg = "Internal error while serving request: #{e.class} #{e.message} (#{e.backtrace.inspect}). Abandoning connection..."
51
51
  @logger&.call(msg)
52
52
  if request && !@done
53
53
  respond(request, 'Internal server error', ':status' => Qeweney::Status::INTERNAL_SERVER_ERROR)
@@ -299,8 +299,8 @@ module TP2
299
299
  # @param chunked [boolean] whether to use chunked transfer encoding
300
300
  # @return [String] formatted response headers
301
301
  def format_headers(headers, body, chunked)
302
- @status = headers[':status'] || (body ? Qeweney::Status::OK : Qeweney::Status::NO_CONTENT)
303
- lines = format_status_line(body, @status, chunked)
302
+ status = headers[':status'] || (body ? Qeweney::Status::OK : Qeweney::Status::NO_CONTENT)
303
+ lines = format_status_line(body, status, chunked)
304
304
  headers.each do |k, v|
305
305
  next if k =~ INTERNAL_HEADER_REGEXP
306
306
 
data/lib/tp2/logger.rb CHANGED
@@ -8,15 +8,6 @@ module TP2
8
8
  @opts = opts
9
9
  end
10
10
 
11
- def log(str)
12
- str = format(
13
- "%<stamp>s %<msg>s\n",
14
- stamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%3N'),
15
- msg: str
16
- )
17
- @machine.write_async(@fd, str)
18
- end
19
-
20
11
  # @param o <Qeweney::Request> request
21
12
  # @param h <Hash, nil> response headers
22
13
  def call(o, h = nil)
@@ -27,6 +18,17 @@ module TP2
27
18
  exit
28
19
  end
29
20
 
21
+ private
22
+
23
+ def log(str)
24
+ str = format(
25
+ "%<stamp>s %<msg>s\n",
26
+ stamp: Time.now.strftime('%Y-%m-%d %H:%M:%S.%3N'),
27
+ msg: str
28
+ )
29
+ @machine.write_async(@fd, str)
30
+ end
31
+
30
32
  def format_log_line(o, h)
31
33
  case o
32
34
  when Exception
data/lib/tp2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module TP2
2
- VERSION = '0.13.1'
2
+ VERSION = '0.13.2'
3
3
  end
data/lib/tp2.rb CHANGED
@@ -37,6 +37,8 @@ module TP2
37
37
  machine = opts[:machine] || UM.new
38
38
  machine.puts(opts[:banner]) if opts[:banner]
39
39
 
40
+ opts[:logger]&.call("Running TP2 #{TP2::VERSION}, UringMachine #{UM::VERSION}, Ruby #{RUBY_VERSION}")
41
+
40
42
  server = Server.new(machine, opts, &app)
41
43
 
42
44
  setup_signal_handling(machine, Fiber.current)
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.13.1
4
+ version: 0.13.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Sharon Rosner