|
5 | 5 |
|
6 | 6 | -behaviour(gen_server). |
7 | 7 |
|
8 | | --export([start_link/0]). |
| 8 | +-export([start_link/1]). |
9 | 9 | -export([gen_salt/0, gen_salt/1]). |
10 | 10 | -export([hashpw/2]). |
11 | 11 |
|
|
18 | 18 | context |
19 | 19 | }). |
20 | 20 |
|
21 | | -start_link() -> |
22 | | - gen_server:start_link({local, ?MODULE}, ?MODULE, [], []). |
| 21 | +start_link(Args) -> gen_server:start_link(?MODULE, Args, []). |
23 | 22 |
|
24 | | -gen_salt() -> |
25 | | - gen_server:call(?MODULE, gen_salt, infinity). |
| 23 | +gen_salt() -> |
| 24 | + poolboy:transaction(nif_pool, fun(Worker) -> |
| 25 | + gen_server:call(Worker, gen_salt, infinity) |
| 26 | + end). |
26 | 27 |
|
27 | 28 | gen_salt(Rounds) -> |
28 | | - gen_server:call(?MODULE, {gen_salt, Rounds}, infinity). |
| 29 | + poolboy:transaction(nif_pool, fun(Worker) -> |
| 30 | + gen_server:call(Worker, {gen_salt, Rounds}, infinity) |
| 31 | + end). |
| 32 | + |
29 | 33 |
|
30 | 34 | hashpw(Password, Salt) -> |
31 | | - gen_server:call(?MODULE, {hashpw, Password, Salt}, infinity). |
| 35 | + poolboy:transaction(nif_pool, fun(Worker) -> |
| 36 | + gen_server:call(Worker, {hashpw, Password, Salt}, infinity) |
| 37 | + end). |
32 | 38 |
|
33 | 39 | init([]) -> |
| 40 | + process_flag(trap_exit, true), |
34 | 41 | {ok, Default} = application:get_env(bcrypt, default_log_rounds), |
35 | 42 | Ctx = bcrypt_nif:create_ctx(), |
36 | 43 | {ok, #state{default_log_rounds = Default, context = Ctx}}. |
|
0 commit comments