Added upstream patch to fix random FTBFS problem (Closes: #959590)
Philipp Huebner
4 years ago
0 | From 52f9244780dd79f1868469d3db81b161cf32b6ab Mon Sep 17 00:00:00 2001 | |
1 | From: =?UTF-8?q?Pawe=C5=82=20Chmielowski?= <pchmielowski@process-one.net> | |
2 | Date: Sun, 3 May 2020 19:32:15 +0200 | |
3 | Subject: [PATCH] Reorganize nif loading | |
4 | ||
5 | --- | |
6 | c_src/p1_sha.c | 8 +++++++- | |
7 | src/fast_tls.erl | 5 ++++- | |
8 | src/p1_sha.erl | 4 +--- | |
9 | 3 files changed, 12 insertions(+), 5 deletions(-) | |
10 | ||
11 | diff --git a/c_src/p1_sha.c b/c_src/p1_sha.c | |
12 | index 97e8e31..a9aa151 100644 | |
13 | --- a/c_src/p1_sha.c | |
14 | +++ b/c_src/p1_sha.c | |
15 | @@ -23,6 +23,12 @@ static int load(ErlNifEnv* env, void** priv, ERL_NIF_TERM load_info) | |
16 | return 0; | |
17 | } | |
18 | ||
19 | +static int upgrade(ErlNifEnv* caller_env, void** priv_data, | |
20 | + void** old_priv_data, ERL_NIF_TERM load_info) | |
21 | +{ | |
22 | + return 0; | |
23 | +} | |
24 | + | |
25 | static ERL_NIF_TERM to_hexlist(ErlNifEnv* env, int argc, | |
26 | const ERL_NIF_TERM argv[]) | |
27 | { | |
28 | @@ -50,4 +56,4 @@ static ErlNifFunc nif_funcs[] = | |
29 | {"to_hexlist", 1, to_hexlist} | |
30 | }; | |
31 | ||
32 | -ERL_NIF_INIT(p1_sha, nif_funcs, load, NULL, NULL, NULL) | |
33 | +ERL_NIF_INIT(p1_sha, nif_funcs, load, NULL, upgrade, NULL) | |
34 | diff --git a/src/fast_tls.erl b/src/fast_tls.erl | |
35 | index 0652c9f..00bc1ac 100644 | |
36 | --- a/src/fast_tls.erl | |
37 | +++ b/src/fast_tls.erl | |
38 | @@ -429,13 +429,16 @@ encode_alpn(ProtoList) -> | |
39 | ||
40 | load_nif() -> | |
41 | SOPath = p1_nif_utils:get_so_path(fast_tls, [fast_tls], "fast_tls"), | |
42 | - ok = p1_sha:load_nif(), | |
43 | load_nif(SOPath). | |
44 | ||
45 | load_nif(SOPath) -> | |
46 | case erlang:load_nif(SOPath, 0) of | |
47 | ok -> | |
48 | ok; | |
49 | + {error, {reload, _}} -> % We don't support upgrade in this module so let's not crash | |
50 | + ok; | |
51 | + {error, {upgrade, _}} -> % We don't support upgrade in this module so let's not crash | |
52 | + ok; | |
53 | {error, ErrorDesc} = Err -> | |
54 | error_logger:error_msg("failed to load TLS NIF: ~s~n", | |
55 | [erl_ddll:format_error(ErrorDesc)]), | |
56 | diff --git a/src/p1_sha.erl b/src/p1_sha.erl | |
57 | index b0320a5..716d88b 100644 | |
58 | --- a/src/p1_sha.erl | |
59 | +++ b/src/p1_sha.erl | |
60 | @@ -22,6 +22,7 @@ | |
61 | %%%---------------------------------------------------------------------- | |
62 | ||
63 | -module(p1_sha). | |
64 | +-on_load(load_nif/0). | |
65 | ||
66 | -author('alexey@process-one.net'). | |
67 | ||
68 | @@ -90,9 +91,6 @@ sha512(Text) -> | |
69 | %%%=================================================================== | |
70 | -ifdef(TEST). | |
71 | ||
72 | -load_nif_test() -> | |
73 | - ?assertEqual(ok, load_nif(p1_nif_utils:get_so_path(?MODULE, [], "p1_sha"))). | |
74 | - | |
75 | sha1_test() -> | |
76 | ?assertEqual( | |
77 | <<169,74,143,229,204,177,155,166,28,76,8,115,211,145,233, |