async-http 0.29.0 → 0.30.0

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: f4cc6c0bacbb274833120d2ce82ddbfbc2b0fe3d22c2cdf4e38329c9b4e0eeae
4
- data.tar.gz: 8a65b52cc3c2a5b3274526c6dd2b918403cb4764be9f94c4573af58b7dbe8f82
3
+ metadata.gz: bfeb33367d8c8e3f81277eaa35ca8e9d63c3112ae00328a0636b9f6f8e18178f
4
+ data.tar.gz: '08f4c3632dc8d1d22160b2e57cb4aad1d55f238825ef0d9a5d8fe772d0ae4a50'
5
5
  SHA512:
6
- metadata.gz: 904bc82674264e738a7b57f4afdb3648a8aa1d5c9ae0d052be1a574e707f0a48e6cbce3bd13c830eff463f925731d6f869bc1c6f7606149a902bbe01d280d765
7
- data.tar.gz: 6c2782725c3b02ac537f1f989a1ad616232ce381f7f2ec96fc5851b9fa28afadcc5ef47ad245d474918c9944b177b613a849db65a18cd94ba1f95ad43e23a9a3
6
+ metadata.gz: 4362e549d79ba747c21c8edafa4e92f20a158443d985e064bb22e53a7b34867c4f40fc3d207d457f5014d119c16fe5622b23939a9898438ae0031c45c922f8b1
7
+ data.tar.gz: 71d48ae5803cd1e7d77c233163aef78cd0b28cd2c240e5b5ee5a464efb58fb3f6ed00e5b593d50d3e302d2fb9815ec031706364a1fff17b01a36b0f3e6bb8152
data/README.md CHANGED
@@ -39,15 +39,13 @@ require 'async/reactor'
39
39
  require 'async/http/url_endpoint'
40
40
  require 'async/http/response'
41
41
 
42
- endpoint = Async::HTTP::URLEndpoint.parse('http://127.0.0.1:9294', reuse_port: true)
42
+ endpoint = Async::HTTP::URLEndpoint.parse('http://127.0.0.1:9294')
43
43
 
44
- class Server < Async::HTTP::Server
45
- def handle_request(request, peer, address)
46
- Async::HTTP::Response[200, {}, ["Hello World"]]
47
- end
44
+ app = lambda do |request|
45
+ Async::HTTP::Response[200, {}, ["Hello World"]]
48
46
  end
49
47
 
50
- server = Server.new(endpoint)
48
+ server = Async::HTTP::Server.new(app, endpoint)
51
49
  client = Async::HTTP::Client.new(endpoint)
52
50
 
53
51
  Async::Reactor.run do |task|
@@ -55,7 +53,9 @@ Async::Reactor.run do |task|
55
53
  server.run
56
54
  end
57
55
 
58
- response = client.get("/", {})
56
+ response = client.get("/")
57
+
58
+ puts response.status
59
59
  puts response.read
60
60
 
61
61
  server_task.stop
@@ -34,7 +34,6 @@ module Async
34
34
  @stream = stream
35
35
 
36
36
  framer = ::HTTP::Protocol::HTTP2::Framer.new(@stream)
37
-
38
37
  super(framer, *args)
39
38
  end
40
39
 
@@ -41,6 +41,8 @@ module Async
41
41
  @reader = nil
42
42
  end
43
43
 
44
+ attr :stream
45
+
44
46
  def start_connection
45
47
  @reader ||= read_in_background
46
48
  end
@@ -49,11 +51,13 @@ module Async
49
51
  task.async do |nested_task|
50
52
  nested_task.annotate("#{version} reading data")
51
53
 
52
- while !self.closed?
53
- self.read_frame
54
+ begin
55
+ while !self.closed?
56
+ self.read_frame
57
+ end
58
+ rescue
59
+ Async.logger.debug(self) {$!}
54
60
  end
55
-
56
- Async.logger.debug(self) {"Connection reset by peer!"}
57
61
  end
58
62
  end
59
63
 
@@ -31,8 +31,9 @@ module Async
31
31
  include Connection
32
32
 
33
33
  def initialize(stream, *args)
34
- framer = ::HTTP::Protocol::HTTP2::Framer.new(stream)
34
+ @stream = stream
35
35
 
36
+ framer = ::HTTP::Protocol::HTTP2::Framer.new(stream)
36
37
  super(framer, *args)
37
38
 
38
39
  @requests = Async::Queue.new
@@ -84,13 +84,27 @@ module Async
84
84
  @options[:alpn_protocols] || DEFAULT_ALPN_PROTOCOLS
85
85
  end
86
86
 
87
+ LOCALHOST = 'localhost'.freeze
88
+
89
+ # We don't try to validate peer certificates when talking to localhost because they would always be self-signed.
90
+ def ssl_verify_mode
91
+ case self.hostname
92
+ when LOCALHOST
93
+ OpenSSL::SSL::VERIFY_NONE
94
+ else
95
+ OpenSSL::SSL::VERIFY_PEER
96
+ end
97
+ end
98
+
87
99
  def ssl_context
88
100
  @options[:ssl_context] || ::OpenSSL::SSL::SSLContext.new.tap do |context|
89
101
  if alpn_protocols = self.alpn_protocols
90
102
  context.alpn_protocols = alpn_protocols
91
103
  end
92
104
 
93
- context.set_params
105
+ context.set_params(
106
+ verify_mode: self.ssl_verify_mode
107
+ )
94
108
  end
95
109
  end
96
110
 
@@ -20,6 +20,6 @@
20
20
 
21
21
  module Async
22
22
  module HTTP
23
- VERSION = "0.29.0"
23
+ VERSION = "0.30.0"
24
24
  end
25
25
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: async-http
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.29.0
4
+ version: 0.30.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Samuel Williams
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-08-05 00:00:00.000000000 Z
11
+ date: 2018-08-07 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: async