diff --git a/include/import/da.h b/include/import/da.h index d129be9d2..90e1f7d0d 100644 --- a/include/import/da.h +++ b/include/import/da.h @@ -5,7 +5,6 @@ #include #include -int init_deviceatlas(void); void deinit_deviceatlas(void); #endif #endif diff --git a/src/da.c b/src/da.c index 1dd148fdd..843da9fa7 100644 --- a/src/da.c +++ b/src/da.c @@ -1,6 +1,7 @@ #include #include +#include #include #include #include @@ -87,9 +88,13 @@ static void da_haproxy_log(da_severity_t severity, da_status_t status, #define DA_COOKIENAME_DEFAULT "DAPROPS" -int init_deviceatlas(void) +/* + * module init / deinit functions. Returns 0 if OK, or a combination of ERR_*. + */ +static int init_deviceatlas(void) { - da_status_t status = DA_SYS; + int err_code = 0; + if (global.deviceatlas.jsonpath != 0) { FILE *jsonp; da_property_decl_t extraprops[] = {{0, 0}}; @@ -100,6 +105,7 @@ int init_deviceatlas(void) if (jsonp == 0) { Alert("deviceatlas : '%s' json file has invalid path or is not readable.\n", global.deviceatlas.jsonpath); + err_code |= ERR_ALERT | ERR_FATAL; goto out; } @@ -111,6 +117,7 @@ int init_deviceatlas(void) if (status != DA_OK) { Alert("deviceatlas : '%s' json file is invalid.\n", global.deviceatlas.jsonpath); + err_code |= ERR_ALERT | ERR_FATAL; goto out; } @@ -119,6 +126,7 @@ int init_deviceatlas(void) if (status != DA_OK) { Alert("deviceatlas : data could not be compiled.\n"); + err_code |= ERR_ALERT | ERR_FATAL; goto out; } @@ -135,7 +143,7 @@ int init_deviceatlas(void) } out: - return status == DA_OK; + return err_code; } void deinit_deviceatlas(void) @@ -365,4 +373,5 @@ static void __da_init(void) sample_register_convs(&conv_kws); cfg_register_keywords(&dacfg_kws); hap_register_build_opts("Built with DeviceAtlas support.", 0); + hap_register_post_check(init_deviceatlas); } diff --git a/src/haproxy.c b/src/haproxy.c index d5089da27..ef1b071d9 100644 --- a/src/haproxy.c +++ b/src/haproxy.c @@ -926,9 +926,6 @@ static void init(int argc, char **argv) /* now we know the buffer size, we can initialize the channels and buffers */ init_buffer(); -#if defined(USE_DEVICEATLAS) - init_deviceatlas(); -#endif list_for_each_entry(pcf, &post_check_list, list) { err_code |= pcf->fct();