From 28046539df61bb5b29d5acf3d03d65312df0e1ee Mon Sep 17 00:00:00 2001 From: Marc Fournier Date: Sat, 17 Jan 2015 16:10:46 +0100 Subject: [PATCH] write_http: make callback names context-dependent This allows multiple destinations to work again (fixes #821), using the same logic as other write plugins. The callback name would now be something like: `write_http/http://example.com/endpoint` which is not very nice. The next step would be to change this plugin to use `` blocks like many others, and pass the URL as a parameter inside each instance block. So I see this patch as the minimum required to let 5.3 and 5.4 users use this plugin with multiple destinations. --- src/write_http.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/write_http.c b/src/write_http.c index 34ea46d9..bfb5524c 100644 --- a/src/write_http.c +++ b/src/write_http.c @@ -506,6 +506,7 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ { wh_callback_t *cb; user_data_t user_data; + char callback_name[DATA_MAX_NAME_LEN]; int i; cb = malloc (sizeof (*cb)); @@ -556,16 +557,18 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ } } - DEBUG ("write_http: Registering write callback with URL %s", + ssnprintf (callback_name, sizeof (callback_name), "write_http/%s", cb->location); + DEBUG ("write_http: Registering write callback '%s' with URL '%s'", + callback_name, cb->location); memset (&user_data, 0, sizeof (user_data)); user_data.data = cb; user_data.free_func = NULL; - plugin_register_flush ("write_http", wh_flush, &user_data); + plugin_register_flush (callback_name, wh_flush, &user_data); user_data.free_func = wh_callback_free; - plugin_register_write ("write_http", wh_write, &user_data); + plugin_register_write (callback_name, wh_write, &user_data); return (0); } /* }}} int wh_config_url */ -- 2.11.0