diff --git a/addons/ot/src/filter.c b/addons/ot/src/filter.c index 6699d4613..d5fc2c72f 100644 --- a/addons/ot/src/filter.c +++ b/addons/ot/src/filter.c @@ -156,29 +156,15 @@ static void flt_ot_return_void(const struct filter *f, char **err) static int flt_ot_init(struct proxy *p, struct flt_conf *fconf) { struct flt_ot_conf *conf = FLT_OT_DEREF(fconf, conf, NULL); - char *err = NULL; - int retval = FLT_OT_RET_ERROR; + int retval = FLT_OT_RET_OK; FLT_OT_FUNC("%p, %p", p, fconf); if (conf == NULL) - FLT_OT_RETURN(retval); + FLT_OT_RETURN(FLT_OT_RET_ERROR); flt_ot_cli_init(); - /* - * Initialize the OpenTracing library. - * Enable HTX streams filtering. - */ - retval = ot_init(&(conf->tracer->tracer), conf->tracer->config, conf->tracer->plugin, &err); - if (retval != FLT_OT_RET_ERROR) - fconf->flags |= FLT_CFG_FL_HTX; - else if (err != NULL) { - FLT_OT_ALERT("%s", err); - - FLT_OT_ERR_FREE(err); - } - FLT_OT_RETURN(retval); } @@ -426,8 +412,6 @@ static int flt_ot_check(struct proxy *p, struct flt_conf *fconf) } -#ifdef DEBUG_OT - /*** * NAME * flt_ot_init_per_thread - @@ -446,14 +430,38 @@ static int flt_ot_check(struct proxy *p, struct flt_conf *fconf) */ static int flt_ot_init_per_thread(struct proxy *p, struct flt_conf *fconf) { - int retval = FLT_OT_RET_OK; + struct flt_ot_conf *conf = FLT_OT_DEREF(fconf, conf, NULL); + char *err = NULL; + int retval = FLT_OT_RET_ERROR; FLT_OT_FUNC("%p, %p", p, fconf); + if (conf == NULL) + FLT_OT_RETURN(retval); + + /* + * Initialize the OpenTracing library. + * Enable HTX streams filtering. + */ + if (conf->tracer->tracer == NULL) { + retval = ot_init(&(conf->tracer->tracer), conf->tracer->config, conf->tracer->plugin, &err); + if (retval != FLT_OT_RET_ERROR) + fconf->flags |= FLT_CFG_FL_HTX; + else if (err != NULL) { + FLT_OT_ALERT("%s", err); + + FLT_OT_ERR_FREE(err); + } + } else { + retval = FLT_OT_RET_OK; + } + FLT_OT_RETURN(retval); } +#ifdef DEBUG_OT + /*** * NAME * flt_ot_deinit_per_thread - @@ -1112,7 +1120,7 @@ struct flt_ops flt_ot_ops = { .init = flt_ot_init, .deinit = flt_ot_deinit, .check = flt_ot_check, - .init_per_thread = FLT_OT_DBG_IFDEF(flt_ot_init_per_thread, NULL), + .init_per_thread = flt_ot_init_per_thread, .deinit_per_thread = FLT_OT_DBG_IFDEF(flt_ot_deinit_per_thread, NULL), /* Stream callbacks. */