iodine 0.7.59 → 0.8.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 +4 -4
- data/.clang-format +15 -0
- data/.rspec +1 -0
- data/.yardopts +1 -3
- data/CHANGELOG.md +132 -12
- data/Gemfile +5 -7
- data/LICENSE.txt +1 -1
- data/README.md +147 -671
- data/Rakefile +9 -16
- data/examples/chatroom.nru +9 -0
- data/examples/client +74 -0
- data/examples/config-hello.nru +9 -0
- data/examples/config-hello.ru +11 -0
- data/examples/config-hijack.ru +13 -0
- data/examples/config-shootout.ru +43 -0
- data/examples/config.nru +120 -0
- data/examples/config.rb +37 -0
- data/examples/config.ru +42 -53
- data/examples/fake +24 -0
- data/examples/hello_neorack +137 -0
- data/examples/routes.nru +29 -0
- data/examples/routes.ru +42 -0
- data/exe/iodine +218 -258
- data/ext/iodine/extconf.rb +27 -100
- data/ext/iodine/fio-stl.h +128336 -0
- data/ext/iodine/fio-stl.md +26396 -0
- data/ext/iodine/iodine.c +213 -1393
- data/ext/iodine/iodine.h +250 -55
- data/ext/iodine/iodine_arg_helper.h +329 -0
- data/ext/iodine/iodine_caller.h +234 -25
- data/ext/iodine/iodine_cli.h +434 -0
- data/ext/iodine/iodine_compression.h +312 -0
- data/ext/iodine/iodine_connection.h +3484 -34
- data/ext/iodine/iodine_core.h +363 -0
- data/ext/iodine/iodine_crypto.h +1441 -0
- data/ext/iodine/iodine_defer.h +225 -4
- data/ext/iodine/iodine_json.h +738 -4
- data/ext/iodine/iodine_listener.h +263 -0
- data/ext/iodine/iodine_log.h +297 -0
- data/ext/iodine/iodine_minimap.h +543 -0
- data/ext/iodine/iodine_mustache.h +461 -4
- data/ext/iodine/iodine_pubsub_eng.h +729 -0
- data/ext/iodine/iodine_pubsub_history.h +547 -0
- data/ext/iodine/iodine_pubsub_msg.h +228 -0
- data/ext/iodine/iodine_redis.h +322 -0
- data/ext/iodine/iodine_store.h +418 -16
- data/ext/iodine/iodine_threads.h +279 -0
- data/ext/iodine/iodine_tls.h +515 -6
- data/ext/iodine/iodine_utils.h +923 -0
- data/iodine.gemspec +37 -42
- data/lib/iodine/benchmark.rb +1690 -0
- data/lib/iodine/documentation.rb +3085 -0
- data/lib/iodine/version.rb +17 -1
- data/lib/iodine.rb +54 -255
- data/logo.svg +36 -0
- data/mustache.md +55 -0
- data/sig/iodine.rbs +4 -0
- metadata +58 -184
- data/.github/ISSUE_TEMPLATE/bug_report.md +0 -40
- data/.github/workflows/ruby.yml +0 -42
- data/.gitignore +0 -20
- data/LIMITS.md +0 -41
- data/SPEC-PubSub-Draft.md +0 -159
- data/SPEC-WebSocket-Draft.md +0 -239
- data/bin/console +0 -22
- data/bin/info.md +0 -353
- data/bin/mustache_bench.rb +0 -100
- data/bin/poc/Gemfile.lock +0 -23
- data/bin/poc/README.md +0 -37
- data/bin/poc/config.ru +0 -66
- data/bin/poc/gemfile +0 -1
- data/bin/poc/www/index.html +0 -57
- data/examples/async_task.ru +0 -92
- data/examples/bates/README.md +0 -3
- data/examples/bates/config.ru +0 -342
- data/examples/bates/david+bold.pdf +0 -0
- data/examples/bates/public/drop-pdf.png +0 -0
- data/examples/bates/public/index.html +0 -600
- data/examples/echo.ru +0 -59
- data/examples/etag.ru +0 -16
- data/examples/hello.ru +0 -29
- data/examples/pubsub_engine.ru +0 -81
- data/examples/rack3.ru +0 -12
- data/examples/redis.ru +0 -70
- data/examples/shootout.ru +0 -73
- data/examples/sub-protocols.ru +0 -90
- data/examples/tcp_client.rb +0 -66
- data/examples/x-sendfile.ru +0 -14
- data/ext/iodine/fio.c +0 -11995
- data/ext/iodine/fio.h +0 -6371
- data/ext/iodine/fio_cli.c +0 -431
- data/ext/iodine/fio_cli.h +0 -189
- data/ext/iodine/fio_json_parser.h +0 -688
- data/ext/iodine/fio_siphash.c +0 -157
- data/ext/iodine/fio_siphash.h +0 -37
- data/ext/iodine/fio_tls.h +0 -129
- data/ext/iodine/fio_tls_missing.c +0 -649
- data/ext/iodine/fio_tls_openssl.c +0 -1106
- data/ext/iodine/fio_tmpfile.h +0 -50
- data/ext/iodine/fiobj.h +0 -44
- data/ext/iodine/fiobj4fio.h +0 -21
- data/ext/iodine/fiobj_ary.c +0 -333
- data/ext/iodine/fiobj_ary.h +0 -139
- data/ext/iodine/fiobj_data.c +0 -1187
- data/ext/iodine/fiobj_data.h +0 -167
- data/ext/iodine/fiobj_hash.c +0 -409
- data/ext/iodine/fiobj_hash.h +0 -176
- data/ext/iodine/fiobj_json.c +0 -622
- data/ext/iodine/fiobj_json.h +0 -68
- data/ext/iodine/fiobj_mem.h +0 -71
- data/ext/iodine/fiobj_mustache.c +0 -317
- data/ext/iodine/fiobj_mustache.h +0 -62
- data/ext/iodine/fiobj_numbers.c +0 -344
- data/ext/iodine/fiobj_numbers.h +0 -127
- data/ext/iodine/fiobj_str.c +0 -433
- data/ext/iodine/fiobj_str.h +0 -172
- data/ext/iodine/fiobject.c +0 -620
- data/ext/iodine/fiobject.h +0 -655
- data/ext/iodine/hpack.h +0 -1923
- data/ext/iodine/http.c +0 -2743
- data/ext/iodine/http.h +0 -1002
- data/ext/iodine/http1.c +0 -910
- data/ext/iodine/http1.h +0 -29
- data/ext/iodine/http1_parser.h +0 -878
- data/ext/iodine/http_internal.c +0 -1279
- data/ext/iodine/http_internal.h +0 -237
- data/ext/iodine/http_mime_parser.h +0 -350
- data/ext/iodine/iodine_caller.c +0 -230
- data/ext/iodine/iodine_connection.c +0 -941
- data/ext/iodine/iodine_defer.c +0 -420
- data/ext/iodine/iodine_fiobj2rb.h +0 -120
- data/ext/iodine/iodine_helpers.c +0 -282
- data/ext/iodine/iodine_helpers.h +0 -12
- data/ext/iodine/iodine_http.c +0 -1181
- data/ext/iodine/iodine_http.h +0 -23
- data/ext/iodine/iodine_json.c +0 -302
- data/ext/iodine/iodine_mustache.c +0 -567
- data/ext/iodine/iodine_pubsub.c +0 -580
- data/ext/iodine/iodine_pubsub.h +0 -26
- data/ext/iodine/iodine_rack_io.c +0 -273
- data/ext/iodine/iodine_rack_io.h +0 -20
- data/ext/iodine/iodine_store.c +0 -146
- data/ext/iodine/iodine_tcp.c +0 -346
- data/ext/iodine/iodine_tcp.h +0 -13
- data/ext/iodine/iodine_tls.c +0 -261
- data/ext/iodine/mustache_parser.h +0 -1546
- data/ext/iodine/redis_engine.c +0 -957
- data/ext/iodine/redis_engine.h +0 -79
- data/ext/iodine/resp_parser.h +0 -317
- data/ext/iodine/websocket_parser.h +0 -506
- data/ext/iodine/websockets.c +0 -743
- data/ext/iodine/websockets.h +0 -185
- data/lib/iodine/connection.rb +0 -61
- data/lib/iodine/json.rb +0 -42
- data/lib/iodine/mustache.rb +0 -113
- data/lib/iodine/pubsub.rb +0 -55
- data/lib/iodine/rack_utils.rb +0 -43
- data/lib/iodine/tls.rb +0 -16
- data/lib/rack/handler/iodine.rb +0 -33
- data/logo.png +0 -0
data/ext/iodine/fio_siphash.c
DELETED
|
@@ -1,157 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright: Boaz Segev, 2017-2019
|
|
3
|
-
License: MIT
|
|
4
|
-
*/
|
|
5
|
-
#include <fio_siphash.h>
|
|
6
|
-
|
|
7
|
-
/* *****************************************************************************
|
|
8
|
-
|
|
9
|
-
NOTICE
|
|
10
|
-
|
|
11
|
-
This code won't be linked to the final application when using fio.h and fio.c.
|
|
12
|
-
|
|
13
|
-
The code is here only to allow the FIOBJ library to be extracted from the
|
|
14
|
-
facil.io framework library.
|
|
15
|
-
|
|
16
|
-
***************************************************************************** */
|
|
17
|
-
|
|
18
|
-
/* *****************************************************************************
|
|
19
|
-
Hashing (SipHash implementation)
|
|
20
|
-
***************************************************************************** */
|
|
21
|
-
|
|
22
|
-
#if !defined(__BIG_ENDIAN__) && !defined(__LITTLE_ENDIAN__) && \
|
|
23
|
-
__BYTE_ORDER__ == __ORDER_BIG_ENDIAN__
|
|
24
|
-
/* the algorithm was designed as little endian... so, byte swap 64 bit. */
|
|
25
|
-
#define sip_local64(i) \
|
|
26
|
-
(((i)&0xFFULL) << 56) | (((i)&0xFF00ULL) << 40) | \
|
|
27
|
-
(((i)&0xFF0000ULL) << 24) | (((i)&0xFF000000ULL) << 8) | \
|
|
28
|
-
(((i)&0xFF00000000ULL) >> 8) | (((i)&0xFF0000000000ULL) >> 24) | \
|
|
29
|
-
(((i)&0xFF000000000000ULL) >> 40) | (((i)&0xFF00000000000000ULL) >> 56)
|
|
30
|
-
#else
|
|
31
|
-
/* no need */
|
|
32
|
-
#define sip_local64(i) (i)
|
|
33
|
-
#endif
|
|
34
|
-
|
|
35
|
-
/* 64Bit left rotation, inlined. */
|
|
36
|
-
#define lrot64(i, bits) \
|
|
37
|
-
(((uint64_t)(i) << (bits)) | ((uint64_t)(i) >> (64 - (bits))))
|
|
38
|
-
|
|
39
|
-
static inline uint64_t fio_siphash_xy(const void *data, size_t len, size_t x,
|
|
40
|
-
size_t y, uint64_t key1, uint64_t key2) {
|
|
41
|
-
/* initialize the 4 words */
|
|
42
|
-
uint64_t v0 = (0x0706050403020100ULL ^ 0x736f6d6570736575ULL) ^ key1;
|
|
43
|
-
uint64_t v1 = (0x0f0e0d0c0b0a0908ULL ^ 0x646f72616e646f6dULL) ^ key2;
|
|
44
|
-
uint64_t v2 = (0x0706050403020100ULL ^ 0x6c7967656e657261ULL) ^ key1;
|
|
45
|
-
uint64_t v3 = (0x0f0e0d0c0b0a0908ULL ^ 0x7465646279746573ULL) ^ key2;
|
|
46
|
-
const uint64_t *w64 = data;
|
|
47
|
-
uint8_t len_mod = len & 255;
|
|
48
|
-
union {
|
|
49
|
-
uint64_t i;
|
|
50
|
-
uint8_t str[8];
|
|
51
|
-
} word;
|
|
52
|
-
|
|
53
|
-
#define hash_map_SipRound \
|
|
54
|
-
do { \
|
|
55
|
-
v2 += v3; \
|
|
56
|
-
v3 = lrot64(v3, 16) ^ v2; \
|
|
57
|
-
v0 += v1; \
|
|
58
|
-
v1 = lrot64(v1, 13) ^ v0; \
|
|
59
|
-
v0 = lrot64(v0, 32); \
|
|
60
|
-
v2 += v1; \
|
|
61
|
-
v0 += v3; \
|
|
62
|
-
v1 = lrot64(v1, 17) ^ v2; \
|
|
63
|
-
v3 = lrot64(v3, 21) ^ v0; \
|
|
64
|
-
v2 = lrot64(v2, 32); \
|
|
65
|
-
} while (0);
|
|
66
|
-
|
|
67
|
-
while (len >= 8) {
|
|
68
|
-
word.i = sip_local64(*w64);
|
|
69
|
-
v3 ^= word.i;
|
|
70
|
-
/* Sip Rounds */
|
|
71
|
-
for (size_t i = 0; i < x; ++i) {
|
|
72
|
-
hash_map_SipRound;
|
|
73
|
-
}
|
|
74
|
-
v0 ^= word.i;
|
|
75
|
-
w64 += 1;
|
|
76
|
-
len -= 8;
|
|
77
|
-
}
|
|
78
|
-
word.i = 0;
|
|
79
|
-
uint8_t *pos = word.str;
|
|
80
|
-
uint8_t *w8 = (void *)w64;
|
|
81
|
-
switch (len) { /* fallthrough is intentional */
|
|
82
|
-
case 7:
|
|
83
|
-
pos[6] = w8[6];
|
|
84
|
-
/* fallthrough */
|
|
85
|
-
case 6:
|
|
86
|
-
pos[5] = w8[5];
|
|
87
|
-
/* fallthrough */
|
|
88
|
-
case 5:
|
|
89
|
-
pos[4] = w8[4];
|
|
90
|
-
/* fallthrough */
|
|
91
|
-
case 4:
|
|
92
|
-
pos[3] = w8[3];
|
|
93
|
-
/* fallthrough */
|
|
94
|
-
case 3:
|
|
95
|
-
pos[2] = w8[2];
|
|
96
|
-
/* fallthrough */
|
|
97
|
-
case 2:
|
|
98
|
-
pos[1] = w8[1];
|
|
99
|
-
/* fallthrough */
|
|
100
|
-
case 1:
|
|
101
|
-
pos[0] = w8[0];
|
|
102
|
-
}
|
|
103
|
-
word.str[7] = len_mod;
|
|
104
|
-
|
|
105
|
-
/* last round */
|
|
106
|
-
v3 ^= word.i;
|
|
107
|
-
hash_map_SipRound;
|
|
108
|
-
hash_map_SipRound;
|
|
109
|
-
v0 ^= word.i;
|
|
110
|
-
/* Finalization */
|
|
111
|
-
v2 ^= 0xff;
|
|
112
|
-
/* d iterations of SipRound */
|
|
113
|
-
for (size_t i = 0; i < y; ++i) {
|
|
114
|
-
hash_map_SipRound;
|
|
115
|
-
}
|
|
116
|
-
hash_map_SipRound;
|
|
117
|
-
hash_map_SipRound;
|
|
118
|
-
hash_map_SipRound;
|
|
119
|
-
hash_map_SipRound;
|
|
120
|
-
/* XOR it all together */
|
|
121
|
-
v0 ^= v1 ^ v2 ^ v3;
|
|
122
|
-
#undef hash_map_SipRound
|
|
123
|
-
return v0;
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
#pragma weak fio_siphash24
|
|
127
|
-
uint64_t __attribute__((weak))
|
|
128
|
-
fio_siphash24(const void *data, size_t len, uint64_t key1, uint64_t key2) {
|
|
129
|
-
return fio_siphash_xy(data, len, 2, 4, key1, key2);
|
|
130
|
-
}
|
|
131
|
-
|
|
132
|
-
#pragma weak fio_siphash13
|
|
133
|
-
uint64_t __attribute__((weak))
|
|
134
|
-
fio_siphash13(const void *data, size_t len, uint64_t key1, uint64_t key2) {
|
|
135
|
-
return fio_siphash_xy(data, len, 1, 3, key1, key2);
|
|
136
|
-
}
|
|
137
|
-
|
|
138
|
-
#if DEBUG
|
|
139
|
-
#include <stdio.h>
|
|
140
|
-
#include <string.h>
|
|
141
|
-
#include <time.h>
|
|
142
|
-
|
|
143
|
-
void fiobj_siphash_test(void) {
|
|
144
|
-
fprintf(stderr, "===================================\n");
|
|
145
|
-
// fio_siphash_speed_test();
|
|
146
|
-
uint64_t result = 0;
|
|
147
|
-
clock_t start;
|
|
148
|
-
start = clock();
|
|
149
|
-
for (size_t i = 0; i < 100000; i++) {
|
|
150
|
-
char *data = "The quick brown fox jumps over the lazy dog ";
|
|
151
|
-
__asm__ volatile("" ::: "memory");
|
|
152
|
-
result += fio_siphash_xy(data, 43, 1, 3, 0, 0);
|
|
153
|
-
}
|
|
154
|
-
fprintf(stderr, "fio 100K SipHash: %lf\n",
|
|
155
|
-
(double)(clock() - start) / CLOCKS_PER_SEC);
|
|
156
|
-
}
|
|
157
|
-
#endif
|
data/ext/iodine/fio_siphash.h
DELETED
|
@@ -1,37 +0,0 @@
|
|
|
1
|
-
#ifndef H_FIO_SIPHASH_H
|
|
2
|
-
#define H_FIO_SIPHASH_H
|
|
3
|
-
|
|
4
|
-
#ifndef _GNU_SOURCE
|
|
5
|
-
#define _GNU_SOURCE
|
|
6
|
-
#endif
|
|
7
|
-
|
|
8
|
-
#include <stdint.h>
|
|
9
|
-
#include <sys/types.h>
|
|
10
|
-
|
|
11
|
-
/**
|
|
12
|
-
* A SipHash variation (2-4).
|
|
13
|
-
*/
|
|
14
|
-
uint64_t fio_siphash24(const void *data, size_t len, uint64_t key1,
|
|
15
|
-
uint64_t key2);
|
|
16
|
-
|
|
17
|
-
/**
|
|
18
|
-
* A SipHash 1-3 variation.
|
|
19
|
-
*/
|
|
20
|
-
uint64_t fio_siphash13(const void *data, size_t len, uint64_t key1,
|
|
21
|
-
uint64_t key2);
|
|
22
|
-
|
|
23
|
-
/**
|
|
24
|
-
* The Hashing function used by dynamic facil.io objects.
|
|
25
|
-
*
|
|
26
|
-
* Currently implemented using SipHash 1-3.
|
|
27
|
-
*/
|
|
28
|
-
#define fio_siphash(data, length, k1, k2) \
|
|
29
|
-
fio_siphash13((data), (length), (k1), (k2))
|
|
30
|
-
|
|
31
|
-
#if DEBUG
|
|
32
|
-
void fiobj_siphash_test(void);
|
|
33
|
-
#else
|
|
34
|
-
#define fiobj_siphash_test()
|
|
35
|
-
#endif
|
|
36
|
-
|
|
37
|
-
#endif /* H_FIO_SIPHASH_H */
|
data/ext/iodine/fio_tls.h
DELETED
|
@@ -1,129 +0,0 @@
|
|
|
1
|
-
/*
|
|
2
|
-
Copyright: Boaz Segev, 2018-2019
|
|
3
|
-
License: MIT
|
|
4
|
-
|
|
5
|
-
Feel free to copy, use and enjoy according to the license provided.
|
|
6
|
-
*/
|
|
7
|
-
#ifndef H_FIO_TLS
|
|
8
|
-
|
|
9
|
-
/**
|
|
10
|
-
* This is an SSL/TLS extension for the facil.io library.
|
|
11
|
-
*/
|
|
12
|
-
#define H_FIO_TLS
|
|
13
|
-
|
|
14
|
-
#include <stdint.h>
|
|
15
|
-
|
|
16
|
-
#ifndef FIO_TLS_PRINT_SECRET
|
|
17
|
-
/* if true, the master key secret should be printed using FIO_LOG_DEBUG */
|
|
18
|
-
#define FIO_TLS_PRINT_SECRET 0
|
|
19
|
-
#endif
|
|
20
|
-
|
|
21
|
-
/** An opaque type used for the SSL/TLS functions. */
|
|
22
|
-
typedef struct fio_tls_s fio_tls_s;
|
|
23
|
-
|
|
24
|
-
/**
|
|
25
|
-
* Creates a new SSL/TLS context / settings object with a default certificate
|
|
26
|
-
* (if any).
|
|
27
|
-
*
|
|
28
|
-
* If no server name is provided and no private key and public certificate are
|
|
29
|
-
* provided, an empty TLS object will be created, (maybe okay for clients).
|
|
30
|
-
*
|
|
31
|
-
* fio_tls_s * tls = fio_tls_new("www.example.com",
|
|
32
|
-
* "public_key.pem",
|
|
33
|
-
* "private_key.pem", NULL );
|
|
34
|
-
*/
|
|
35
|
-
fio_tls_s *fio_tls_new(const char *server_name, const char *public_cert_file,
|
|
36
|
-
const char *private_key_file, const char *pk_password);
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Adds a certificate a new SSL/TLS context / settings object (SNI support).
|
|
40
|
-
*
|
|
41
|
-
* fio_tls_cert_add(tls, "www.example.com",
|
|
42
|
-
* "public_key.pem",
|
|
43
|
-
* "private_key.pem", NULL );
|
|
44
|
-
*/
|
|
45
|
-
void fio_tls_cert_add(fio_tls_s *, const char *server_name,
|
|
46
|
-
const char *public_cert_file,
|
|
47
|
-
const char *private_key_file, const char *pk_password);
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Adds an ALPN protocol callback to the SSL/TLS context.
|
|
51
|
-
*
|
|
52
|
-
* The first protocol added will act as the default protocol to be selected.
|
|
53
|
-
*
|
|
54
|
-
* The `on_selected` callback should accept the `uuid`, the user data pointer
|
|
55
|
-
* passed to either `fio_tls_accept` or `fio_tls_connect` (here:
|
|
56
|
-
* `udata_connetcion`) and the user data pointer passed to the
|
|
57
|
-
* `fio_tls_alpn_add` function (`udata_tls`).
|
|
58
|
-
*
|
|
59
|
-
* The `on_cleanup` callback will be called when the TLS object is destroyed (or
|
|
60
|
-
* `fio_tls_alpn_add` is called again with the same protocol name). The
|
|
61
|
-
* `udata_tls` argument will be passed along, as is, to the callback (if set).
|
|
62
|
-
*
|
|
63
|
-
* Except for the `tls` and `protocol_name` arguments, all arguments can be
|
|
64
|
-
* NULL.
|
|
65
|
-
*/
|
|
66
|
-
void fio_tls_alpn_add(fio_tls_s *tls, const char *protocol_name,
|
|
67
|
-
void (*on_selected)(intptr_t uuid, void *udata_connection,
|
|
68
|
-
void *udata_tls),
|
|
69
|
-
void *udata_tls, void (*on_cleanup)(void *udata_tls));
|
|
70
|
-
|
|
71
|
-
/**
|
|
72
|
-
* Returns the number of registered ALPN protocol names.
|
|
73
|
-
*
|
|
74
|
-
* This could be used when deciding if protocol selection should be delegated to
|
|
75
|
-
* the ALPN mechanism, or whether a protocol should be immediately assigned.
|
|
76
|
-
*
|
|
77
|
-
* If no ALPN protocols are registered, zero (0) is returned.
|
|
78
|
-
*/
|
|
79
|
-
uintptr_t fio_tls_alpn_count(fio_tls_s *tls);
|
|
80
|
-
|
|
81
|
-
/**
|
|
82
|
-
* Adds a certificate to the "trust" list, which automatically adds a peer
|
|
83
|
-
* verification requirement.
|
|
84
|
-
*
|
|
85
|
-
* Note, when the fio_tls_s object is used for server connections, this will
|
|
86
|
-
* limit connections to clients that connect using a trusted certificate.
|
|
87
|
-
*
|
|
88
|
-
* fio_tls_trust(tls, "google-ca.pem" );
|
|
89
|
-
*/
|
|
90
|
-
void fio_tls_trust(fio_tls_s *, const char *public_cert_file);
|
|
91
|
-
|
|
92
|
-
/**
|
|
93
|
-
* Establishes an SSL/TLS connection as an SSL/TLS Server, using the specified
|
|
94
|
-
* context / settings object.
|
|
95
|
-
*
|
|
96
|
-
* The `uuid` should be a socket UUID that is already connected to a peer (i.e.,
|
|
97
|
-
* the result of `fio_accept`).
|
|
98
|
-
*
|
|
99
|
-
* The `udata` is an opaque user data pointer that is passed along to the
|
|
100
|
-
* protocol selected (if any protocols were added using `fio_tls_alpn_add`).
|
|
101
|
-
*/
|
|
102
|
-
void fio_tls_accept(intptr_t uuid, fio_tls_s *tls, void *udata);
|
|
103
|
-
|
|
104
|
-
/**
|
|
105
|
-
* Establishes an SSL/TLS connection as an SSL/TLS Client, using the specified
|
|
106
|
-
* context / settings object.
|
|
107
|
-
*
|
|
108
|
-
* The `uuid` should be a socket UUID that is already connected to a peer (i.e.,
|
|
109
|
-
* one received by a `fio_connect` specified callback `on_connect`).
|
|
110
|
-
*
|
|
111
|
-
* The `udata` is an opaque user data pointer that is passed along to the
|
|
112
|
-
* protocol selected (if any protocols were added using `fio_tls_alpn_add`).
|
|
113
|
-
*/
|
|
114
|
-
void fio_tls_connect(intptr_t uuid, fio_tls_s *tls, void *udata);
|
|
115
|
-
|
|
116
|
-
/**
|
|
117
|
-
* Increase the reference count for the TLS object.
|
|
118
|
-
*
|
|
119
|
-
* Decrease with `fio_tls_destroy`.
|
|
120
|
-
*/
|
|
121
|
-
void fio_tls_dup(fio_tls_s *tls);
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Destroys the SSL/TLS context / settings object and frees any related
|
|
125
|
-
* resources / memory.
|
|
126
|
-
*/
|
|
127
|
-
void fio_tls_destroy(fio_tls_s *tls);
|
|
128
|
-
|
|
129
|
-
#endif
|