falcon 0.21.0 → 0.22.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: 91279ed58645ed1cda598fabfa2c4bfbf8b46b48d85592d1931029f8349c5fd5
4
- data.tar.gz: 5b6e8eee3ab6feabb39b48fbb0b1ab2935df438f0337b8a99bc5b4cde636657b
3
+ metadata.gz: fecfaa691ad0c6d92496dff1a282642d20c98328d56f73499271134bfbbb086f
4
+ data.tar.gz: b0bfaf290fca3958944027d225e5e620ace8d98d52d2c2ffffb0679c277500d0
5
5
  SHA512:
6
- metadata.gz: 7d4083ce4077d31ed120561e49a21511633593975c3c6c620c6a674144a7a4affe2cafaf9715b95b5425b4bd2b023f9cee47e8a0b317d9f84f858d8d8c1d3ad0
7
- data.tar.gz: aa100da91cb010f6ce2f4af7ea6ee3dbe1987ba325815793975e24cee142cb3c5f8fbe8aecb9c22fff68ae617c97eb49e0aceec6a1630361329ffbc5dbfcb984
6
+ metadata.gz: 2e7d2726626b8d0302272861c676d3e5e8ca750fad87de95a1aa02900a9aaac4372b441d7cbb140cd28568aa1b998b84f8d2e409e81fa2cc88a80f6eb6974b77
7
+ data.tar.gz: 2ff4f1474e398a4f4b07d0d5bb7aeebf69b8eab2dc7d874e3ee83aa31881583c7776376f714d6e74500c535450cb6717a83f675aeb156ef7b2b8bc2dd615a8c4
data/README.md CHANGED
@@ -139,6 +139,55 @@ You can invoke Falcon via `rackup`:
139
139
 
140
140
  This will run a single-threaded instance of Falcon using `http/1`. While it works fine, it's not recommended to use `rackup` with `falcon`, because performance will be limited.
141
141
 
142
+ ### Self-Signed TLS with Curl
143
+
144
+ In order to use `curl` with self-signed localhost certificates, you need to specify `--insecure` or the path of the certificate to validate the request:
145
+
146
+ ```
147
+ > curl -v https://localhost:9292 --cacert ~/.localhost/localhost.crt
148
+ * Trying ::1...
149
+ * TCP_NODELAY set
150
+ * Connected to localhost (::1) port 9292 (#0)
151
+ * ALPN, offering http/1.1
152
+ * Cipher selection: ALL:!EXPORT:!EXPORT40:!EXPORT56:!aNULL:!LOW:!RC4:@STRENGTH
153
+ * successfully set certificate verify locations:
154
+ * CAfile: /Users/samuel/.localhost/localhost.crt
155
+ CApath: none
156
+ * TLSv1.2 (OUT), TLS header, Certificate Status (22):
157
+ * TLSv1.2 (OUT), TLS handshake, Client hello (1):
158
+ * TLSv1.2 (IN), TLS handshake, Server hello (2):
159
+ * TLSv1.2 (IN), TLS handshake, Certificate (11):
160
+ * TLSv1.2 (IN), TLS handshake, Server key exchange (12):
161
+ * TLSv1.2 (IN), TLS handshake, Request CERT (13):
162
+ * TLSv1.2 (IN), TLS handshake, Server finished (14):
163
+ * TLSv1.2 (OUT), TLS handshake, Certificate (11):
164
+ * TLSv1.2 (OUT), TLS handshake, Client key exchange (16):
165
+ * TLSv1.2 (OUT), TLS change cipher, Change cipher spec (1):
166
+ * TLSv1.2 (OUT), TLS handshake, Finished (20):
167
+ * TLSv1.2 (IN), TLS change cipher, Change cipher spec (1):
168
+ * TLSv1.2 (IN), TLS handshake, Finished (20):
169
+ * SSL connection using TLSv1.2 / ECDHE-RSA-AES256-GCM-SHA384
170
+ * ALPN, server accepted to use http/1.1
171
+ * Server certificate:
172
+ * subject: O=Development/CN=localhost
173
+ * start date: Aug 10 00:31:43 2018 GMT
174
+ * expire date: Aug 7 00:31:43 2028 GMT
175
+ * subjectAltName: host "localhost" matched cert's "localhost"
176
+ * issuer: O=Development/CN=localhost
177
+ * SSL certificate verify ok.
178
+ > GET / HTTP/1.1
179
+ > Host: localhost:9292
180
+ > User-Agent: curl/7.63.0
181
+ > Accept: */*
182
+ >
183
+ < HTTP/1.1 301
184
+ < location: /index
185
+ < cache-control: max-age=86400
186
+ < content-length: 0
187
+ <
188
+ * Connection #0 to host localhost left intact
189
+ ```
190
+
142
191
  ## Performance
143
192
 
144
193
  Falcon uses an asynchronous event-driven reactor to provide non-blocking IO. It can handle an arbitrary number of in-flight requests with minimal overhead per request.
@@ -44,6 +44,8 @@ module Falcon
44
44
  option '-h/--hostname <hostname>', "Specify the hostname which would be used for certificates, etc."
45
45
  option '-t/--timeout <duration>', "Specify the maximum time to wait for blocking operations.", type: Float, default: 60
46
46
 
47
+ option '--reuse-port', "Enable SO_REUSEPORT if possible.", default: false
48
+
47
49
  option '-c/--config <path>', "Rackup configuration file to load", default: 'config.ru'
48
50
  option '-n/--concurrency <count>', "Number of processes to start", default: Async::Container.hardware_concurrency, type: Integer
49
51
 
@@ -71,14 +73,18 @@ module Falcon
71
73
  # Oh, for Hash#slice(keys...)
72
74
  options = {}
73
75
 
74
- if @options[:hostname]
76
+ if @options.key? :hostname
75
77
  options[:hostname] = @options[:hostname]
76
78
  end
77
79
 
78
- if @options[:port]
80
+ if @options.key? :port
79
81
  options[:port] = @options[:port]
80
82
  end
81
83
 
84
+ if @options.key? :reuse_port
85
+ options[:reuse_port] = @options[:reuse_port]
86
+ end
87
+
82
88
  if duration = @options[:timeout] and !duration.zero?
83
89
  options[:timeout] = duration
84
90
  end
@@ -19,5 +19,5 @@
19
19
  # THE SOFTWARE.
20
20
 
21
21
  module Falcon
22
- VERSION = "0.21.0"
22
+ VERSION = "0.22.0"
23
23
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: falcon
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.21.0
4
+ version: 0.22.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: 2019-01-25 00:00:00.000000000 Z
11
+ date: 2019-01-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: http-protocol