iodine 0.7.44 → 0.7.45
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/.github/ISSUE_TEMPLATE/bug_report.md +1 -1
- data/.gitignore +1 -0
- data/CHANGELOG.md +6 -0
- data/ext/iodine/extconf.rb +21 -16
- data/ext/iodine/fio.c +1108 -162
- data/ext/iodine/fio.h +49 -13
- data/ext/iodine/fio_cli.c +1 -1
- data/ext/iodine/fio_tls_missing.c +8 -0
- data/ext/iodine/fio_tls_openssl.c +8 -0
- data/ext/iodine/fio_tmpfile.h +13 -1
- data/ext/iodine/fiobj_data.c +6 -4
- data/ext/iodine/fiobj_data.h +2 -1
- data/ext/iodine/fiobj_hash.c +32 -6
- data/ext/iodine/fiobj_mustache.c +9 -0
- data/ext/iodine/fiobj_numbers.c +86 -8
- data/ext/iodine/fiobj_str.c +24 -11
- data/ext/iodine/fiobject.c +1 -1
- data/ext/iodine/fiobject.h +5 -3
- data/ext/iodine/http.c +66 -10
- data/ext/iodine/http1.c +2 -1
- data/ext/iodine/http1_parser.h +1065 -103
- data/ext/iodine/http_internal.c +1 -0
- data/ext/iodine/http_internal.h +4 -2
- data/ext/iodine/iodine.c +63 -0
- data/ext/iodine/iodine.h +2 -0
- data/ext/iodine/iodine_caller.c +48 -8
- data/ext/iodine/iodine_http.c +24 -0
- data/ext/iodine/iodine_rack_io.c +21 -0
- data/ext/iodine/iodine_tcp.c +14 -0
- data/ext/iodine/iodine_tls.c +8 -0
- data/ext/iodine/mustache_parser.h +4 -0
- data/ext/iodine/redis_engine.c +14 -11
- data/ext/iodine/websockets.c +7 -3
- data/iodine.gemspec +5 -4
- data/lib/iodine/version.rb +1 -1
- metadata +11 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 33f22236ecbf1c2166c056476bbefb6ab80b709cdb6cc16c0ec144926cf3fdc0
|
4
|
+
data.tar.gz: 6b0c70cc71431eb3611d34af45c80f679c0177141843a5e03b1cdb6b242d4f19
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 3506324c77f3de50b9dda515922c3468bbb49c63cd58831d2f7711e02b28209ba7fb5d15e076e860092be4d783cf595fd69b2483bf7ee59b873040005468161f
|
7
|
+
data.tar.gz: 7c4b0ffb76c749c11f18d66faaad5494e6ab7c675b0d887721de3c7494a7b764886bb8b7b4f5fc369e606e0f3b2e30172818dae27faa4c3cfffa73d094012cf9
|
data/.gitignore
CHANGED
data/CHANGELOG.md
CHANGED
@@ -6,6 +6,12 @@ Please notice that this change log contains changes for upcoming releases as wel
|
|
6
6
|
|
7
7
|
## Changes:
|
8
8
|
|
9
|
+
#### Change log v.0.7.45 (2021-11-26)
|
10
|
+
|
11
|
+
**Security**: Fixes a number of issues with the HTTP parser that could have been leveraged in potential exploit attempts such as request smuggling. Credit to @dcepelik (David Čepelík).
|
12
|
+
|
13
|
+
**Compatibility**: This release adds experimental Windows support (I don't have Windows, nor Intel, I cannot test this). Credit for a lot of work by @janbiedermann (Jan Biedermann).
|
14
|
+
|
9
15
|
#### Change log v.0.7.44 (2021-02-28)
|
10
16
|
|
11
17
|
**Fix**: Fixes issue #103 where an empty String response would result in the word "null" being returned (no String object was created, which routed the NULL object to facil.io's JSON interpreter). Credit to @waghanza (Marwan Rabbâa) for exposing the issue.
|
data/ext/iodine/extconf.rb
CHANGED
@@ -36,7 +36,10 @@ int main(void) {
|
|
36
36
|
EOS
|
37
37
|
|
38
38
|
# Test for manual selection and then TRY_COMPILE with each polling engine
|
39
|
-
if
|
39
|
+
if Gem.win_platform?
|
40
|
+
puts "skipping polling tests, using WSAPOLL on Windows"
|
41
|
+
$defs << "-DFIO_ENGINE_WSAPOLL"
|
42
|
+
elsif ENV['FIO_POLL']
|
40
43
|
puts "skipping polling tests, enforcing manual selection of: poll"
|
41
44
|
$defs << "-DFIO_ENGINE_POLL"
|
42
45
|
elsif ENV['FIO_FORCE_POLL']
|
@@ -64,9 +67,10 @@ end
|
|
64
67
|
|
65
68
|
iodine_test_polling_support()
|
66
69
|
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
+
unless Gem.win_platform?
|
71
|
+
# Test for OpenSSL version equal to 1.0.0 or greater.
|
72
|
+
unless ENV['NO_SSL'] || ENV['NO_TLS'] || ENV["DISABLE_SSL"]
|
73
|
+
OPENSSL_TEST_CODE = <<EOS
|
70
74
|
\#include <openssl/bio.h>
|
71
75
|
\#include <openssl/err.h>
|
72
76
|
\#include <openssl/ssl.h>
|
@@ -84,18 +88,19 @@ int main(void) {
|
|
84
88
|
}
|
85
89
|
EOS
|
86
90
|
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
91
|
+
dir_config("openssl")
|
92
|
+
begin
|
93
|
+
require 'openssl'
|
94
|
+
rescue LoadError
|
95
|
+
else
|
96
|
+
if have_library('crypto') && have_library('ssl')
|
97
|
+
puts "detected OpenSSL library, testing for version and required functions."
|
98
|
+
if try_compile(OPENSSL_TEST_CODE)
|
99
|
+
$defs << "-DHAVE_OPENSSL"
|
100
|
+
puts "confirmed OpenSSL to be version 1.1.0 or above (#{OpenSSL::OPENSSL_LIBRARY_VERSION})...\n* compiling with HAVE_OPENSSL."
|
101
|
+
else
|
102
|
+
puts "FAILED: OpenSSL version not supported (#{OpenSSL::OPENSSL_LIBRARY_VERSION} is too old)."
|
103
|
+
end
|
99
104
|
end
|
100
105
|
end
|
101
106
|
end
|