From bc2918029233c9925def654107dfc5cd5d4919f2 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. Conflicts: src/write_http.c --- 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 eab1f617..1253a26a 100644 --- a/src/write_http.c +++ b/src/write_http.c @@ -498,6 +498,7 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ wh_callback_t *cb; int buffer_size = 0; user_data_t user_data; + char callback_name[DATA_MAX_NAME_LEN]; int i; cb = malloc (sizeof (*cb)); @@ -600,16 +601,18 @@ static int wh_config_url (oconfig_item_t *ci) /* {{{ */ /* Nulls the buffer and sets ..._free and ..._fill. */ wh_reset_buffer (cb); - 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