summary | shortlog | log | commit | commitdiff | tree
raw | patch | inline | side by side (parent: a0645bb)
raw | patch | inline | side by side (parent: a0645bb)
author | Sebastian Harl <sh@tokkee.org> | |
Sat, 23 Nov 2013 15:08:20 +0000 (16:08 +0100) | ||
committer | Sebastian Harl <sh@tokkee.org> | |
Sat, 23 Nov 2013 15:08:20 +0000 (16:08 +0100) |
debian/changelog | patch | blob | history | |
debian/patches/00list | patch | blob | history | |
debian/patches/amqp_0_4.dpatch | [new file with mode: 0644] | patch | blob |
diff --git a/debian/changelog b/debian/changelog
index 81156add4fe8d6f98ef1cfe40f3e2a2924d146f1..a1f2900f2f4fcbdf12c146aa94dcb04220cda7f8 100644 (file)
--- a/debian/changelog
+++ b/debian/changelog
- Removed sample configuration for the write_mongodb plugin; the plugin is
not available on Debian; thanks to Bryan Fullerton for reporting this
(cf. LP:#1206813, Closes: #724699).
+ * debian/patches:
+ - Added amqp_0_4.dpatch: Added support for rabbitmq-c 0.4.x.
- -- Sebastian Harl <tokkee@debian.org> Sat, 23 Nov 2013 11:51:43 +0100
+ -- Sebastian Harl <tokkee@debian.org> Sat, 23 Nov 2013 16:08:05 +0100
collectd (5.4.0-2) unstable; urgency=low
diff --git a/debian/patches/00list b/debian/patches/00list
index 23aacf62e043c084fffcce668440b01881337668..73b489e43f4839c5538bbda5d2a37bb0e3ad36ca 100644 (file)
--- a/debian/patches/00list
+++ b/debian/patches/00list
collection_conf_path.dpatch
myplugin_includes.dpatch
bts559801_plugin_find_fix.dpatch
+amqp_0_4.dpatch
diff --git a/debian/patches/amqp_0_4.dpatch b/debian/patches/amqp_0_4.dpatch
--- /dev/null
@@ -0,0 +1,109 @@
+#! /bin/sh /usr/share/dpatch/dpatch-run
+## amqp_0_4.dpatch by Sebastian Harl <sh@tokkee.org>
+##
+## DP: amqp plugin: Added support for rabbitmq-c 0.4.x.
+## DP:
+## DP: Upstream introduced a new socket interface and deprecated the old one.
+## DP: This leads to compiler errors when using GCC and -Werror.
+## DP: Forwarded as https://github.com/collectd/collectd/pull/490
+
+@DPATCH@
+
+diff --git a/src/amqp.c b/src/amqp.c
+index 767a877..bebaea7 100644
+--- a/src/amqp.c
++++ b/src/amqp.c
+@@ -38,6 +38,18 @@
+ #include <amqp.h>
+ #include <amqp_framing.h>
+
++#if 1
++# include <amqp_tcp_socket.h>
++#endif
++#if 0
++# include <amqp_socket.h>
++#endif
++#if 1
++/* rabbitmq-c does not currently ship amqp_socket.h
++ * and, thus, does not define this function. */
++int amqp_socket_close(amqp_socket_t *);
++#endif
++
+ /* Defines for the delivery mode. I have no idea why they're not defined by the
+ * library.. */
+ #define CAMQP_DM_VOLATILE 1
+@@ -390,8 +402,12 @@ static int camqp_setup_queue (camqp_config_t *conf) /* {{{ */
+ static int camqp_connect (camqp_config_t *conf) /* {{{ */
+ {
+ amqp_rpc_reply_t reply;
+- int sockfd;
+ int status;
++#if 1
++ amqp_socket_t *socket;
++#else
++ int sockfd;
++#endif
+
+ if (conf->connection != NULL)
+ return (0);
+@@ -403,6 +419,34 @@ static int camqp_connect (camqp_config_t *conf) /* {{{ */
+ return (ENOMEM);
+ }
+
++#if 1
++# define CLOSE_SOCKET() amqp_socket_close (socket)
++ /* TODO: add support for SSL using amqp_ssl_socket_new
++ * and related functions */
++ socket = amqp_tcp_socket_new (conf->connection);
++ if (! socket)
++ {
++ ERROR ("amqp plugin: amqp_tcp_socket_new failed.");
++ amqp_destroy_connection (conf->connection);
++ conf->connection = NULL;
++ return (ENOMEM);
++ }
++
++ status = amqp_socket_open (socket, CONF(conf, host), conf->port);
++ if (status < 0)
++ {
++ char errbuf[1024];
++ status *= -1;
++ ERROR ("amqp plugin: amqp_socket_open failed: %s",
++ sstrerror (status, errbuf, sizeof (errbuf)));
++ CLOSE_SOCKET ();
++ amqp_destroy_connection (conf->connection);
++ conf->connection = NULL;
++ return (status);
++ }
++#else /* HAVE_AMQP_TCP_SOCKET */
++# define CLOSE_SOCKET close(sockfd)
++ /* this interface is deprecated as of rabbitmq-c 0.4 */
+ sockfd = amqp_open_socket (CONF(conf, host), conf->port);
+ if (sockfd < 0)
+ {
+@@ -415,6 +459,7 @@ static int camqp_connect (camqp_config_t *conf) /* {{{ */
+ return (status);
+ }
+ amqp_set_sockfd (conf->connection, sockfd);
++#endif
+
+ reply = amqp_login (conf->connection, CONF(conf, vhost),
+ /* channel max = */ 0,
+@@ -427,7 +472,7 @@ static int camqp_connect (camqp_config_t *conf) /* {{{ */
+ ERROR ("amqp plugin: amqp_login (vhost = %s, user = %s) failed.",
+ CONF(conf, vhost), CONF(conf, user));
+ amqp_destroy_connection (conf->connection);
+- close (sockfd);
++ CLOSE_SOCKET ();
+ conf->connection = NULL;
+ return (1);
+ }
+@@ -440,7 +485,7 @@ static int camqp_connect (camqp_config_t *conf) /* {{{ */
+ ERROR ("amqp plugin: amqp_channel_open failed.");
+ amqp_connection_close (conf->connection, AMQP_REPLY_SUCCESS);
+ amqp_destroy_connection (conf->connection);
+- close(sockfd);
++ CLOSE_SOCKET ();
+ conf->connection = NULL;
+ return (1);
+ }