h2 0.3.0 → 0.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 5c5e8c20010d6ac2131cb0b47f4ba1634c435729
4
- data.tar.gz: 0a0e54c4cab667253cdeb6e099d26d4505fe3484
3
+ metadata.gz: dfd3251c0bd00b269688a2e87b54e009be339aff
4
+ data.tar.gz: ec1799dd72604f8e089bd7be923f1f5083ec8c2d
5
5
  SHA512:
6
- metadata.gz: f2b0df60085bc8193e8f9e2504c5bf25bb65cfbcc9926ada856df1641ac43d08b101c9f6badbc57afe331a6d255e308929269cc35a6e32113b7a470e4edd074b
7
- data.tar.gz: 6c74fdda38d4bd78014cde927acbf11e7273fe309fd054110ee501acc08e068aa757841cf4a5c3119ee1af9ee988fc673c26c74b8d75e923cbd583eeefa64653
6
+ metadata.gz: e99a4e6d24b280b3ca9b60189e067c4382f585723a8aae28185e5e85423d0f2ad11cb5d8758082bc323f51a9fcffbdbaa522c12552d1777d27c37c93994ddb62
7
+ data.tar.gz: cb8952f4b441870ee7b8fc3d1dd839c74fd653ce8a7b41eaf1d0c4b0a84fb4eab687c995f2505b1fe3ccaa5fb6134f8739ba8fbad8fbd419f838ef9e0c0ca16b
data/.travis.yml CHANGED
@@ -6,3 +6,4 @@ rvm:
6
6
  - 2.3.2
7
7
  - 2.3.3
8
8
  - 2.4.0
9
+ - 2.4.1
data/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  h2 changelog
2
2
  ============
3
3
 
4
+ ### 0.3.1 13 may 2017
5
+
6
+ * `servername` should not be set on client socket when IP address (#1)
7
+ * add ALPN/NPN checks for minimum version of underlying OpenSSL library
8
+
4
9
  ### 0.3.0 10 may 2017
5
10
 
6
11
  * update http-2 gem version >= 0.8.4 for window update state fix
data/lib/h2/client.rb CHANGED
@@ -1,4 +1,5 @@
1
1
  require 'openssl'
2
+ require 'resolv'
2
3
  require 'h2/client/tcp_socket'
3
4
 
4
5
  module H2
@@ -13,8 +14,10 @@ module H2
13
14
  :promise
14
15
  ]
15
16
 
16
- ALPN_PROTOCOLS = ['h2']
17
- DEFAULT_MAXLEN = 4096
17
+ ALPN_OPENSSL_MIN_VERSION = 0x10002001
18
+ ALPN_PROTOCOLS = ['h2']
19
+ DEFAULT_MAXLEN = 4096
20
+ RE_IP_ADDR = Regexp.union Resolv::IPv4::Regex, Resolv::IPv6::Regex
18
21
 
19
22
  attr_accessor :last_stream
20
23
  attr_reader :client, :reader, :scheme, :socket, :streams
@@ -221,7 +224,7 @@ module H2
221
224
  def tls_socket socket
222
225
  socket = OpenSSL::SSL::SSLSocket.new socket, create_ssl_context
223
226
  socket.sync_close = true
224
- socket.hostname = @addr
227
+ socket.hostname = @addr unless RE_IP_ADDR.match(@addr)
225
228
  socket.connect
226
229
  socket
227
230
  end
@@ -230,7 +233,6 @@ module H2
230
233
  #
231
234
  def create_ssl_context
232
235
  ctx = OpenSSL::SSL::SSLContext.new
233
- ctx.alpn_protocols = ALPN_PROTOCOLS
234
236
  ctx.ca_file = @tls[:ca_file] if @tls[:ca_file]
235
237
  ctx.ca_path = @tls[:ca_path] if @tls[:ca_path]
236
238
  ctx.ciphers = @tls[:ciphers] || OpenSSL::SSL::SSLContext::DEFAULT_PARAMS[:ciphers]
@@ -238,8 +240,19 @@ module H2
238
240
  ctx.ssl_version = :TLSv1_2
239
241
  ctx.verify_mode = @tls[:verify_mode] || ( OpenSSL::SSL::VERIFY_PEER |
240
242
  OpenSSL::SSL::VERIFY_FAIL_IF_NO_PEER_CERT )
243
+ set_ssl_context_protocols ctx
241
244
  ctx
242
245
  end
243
246
 
247
+ if OpenSSL::OPENSSL_VERSION_NUMBER >= ALPN_OPENSSL_MIN_VERSION
248
+ def set_ssl_context_protocols ctx
249
+ ctx.alpn_protocols = ALPN_PROTOCOLS
250
+ end
251
+ else
252
+ def set_ssl_context_protocols ctx
253
+ ctx.npn_protocols = ALPN_PROTOCOLS
254
+ end
255
+ end
256
+
244
257
  end
245
258
  end
data/lib/h2/version.rb CHANGED
@@ -1,3 +1,3 @@
1
1
  module H2
2
- VERSION = '0.3.0'
2
+ VERSION = '0.3.1'
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: h2
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.0
4
+ version: 0.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Kenichi Nakamura
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-05-10 00:00:00.000000000 Z
11
+ date: 2017-05-13 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-2
@@ -132,7 +132,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
132
132
  version: '0'
133
133
  requirements: []
134
134
  rubyforge_project:
135
- rubygems_version: 2.6.11
135
+ rubygems_version: 2.6.12
136
136
  signing_key:
137
137
  specification_version: 4
138
138
  summary: an http/2 client based on http-2 and modern ruby