diff --git a/lib/access/rules.rl b/lib/access/rules.rl index 2661da31c2b2a2d2ea23115213ab0e173e4a485a..e8871e39d668df01e35a31fc05d3fb72234deb15 100644 --- a/lib/access/rules.rl +++ b/lib/access/rules.rl @@ -417,10 +417,15 @@ static bool initialised = false; void rules_init (void) { if (!initialised) { - initialize_A2XS_error_table (); + add_error_table(&et_A2XS_error_table); initialised = true; } } void rules_fini (void) { + if (initialised) { + remove_error_table(&et_A2XS_error_table); + initialised = false; + } + } diff --git a/lib/identity/identity.rl b/lib/identity/identity.rl index fd13df91e8268d0b473073a2167033640615cdff..c0823d5f2b4e7ea0c245c8fb94164a6531ad2d55 100644 --- a/lib/identity/identity.rl +++ b/lib/identity/identity.rl @@ -537,20 +537,27 @@ static int _plustype (const char *p) { %% write data; - /* Initialise the ARPA2 Identity system. This has a * mirror image for cleaup in a2id_fini(). */ +static bool initialised = false; + void a2id_init (void) { - initialize_A2ID_error_table (); + if (!initialised) { + add_error_table(&et_A2ID_error_table); + initialised = true; + } } - /* Finalise the ARPA2 Identity system. This may do * cleanup operations. */ void a2id_fini (void) { a2id_dropkeys (); + if (initialised) { + remove_error_table(&et_A2ID_error_table); + initialised = false; + } } static bool a2id_parse_generic (a2id_t *out, const char *in, unsigned inlen, bool is_a2id) {