From 239c28db8f4ef9c1262419c7e461076ed46bb172 Mon Sep 17 00:00:00 2001 From: Andrey Volk Date: Sat, 12 Jul 2025 11:55:57 +0000 Subject: [PATCH] [mod_amqp] Add support for newer librabbitmq --- configure.ac | 19 ++++++++++++++++--- src/mod/event_handlers/mod_amqp/Makefile.am | 2 +- src/mod/event_handlers/mod_amqp/mod_amqp.h | 8 ++++++++ .../mod_amqp/mod_amqp_connection.c | 2 ++ w32/rabbitmq-c-version.props | 3 +++ w32/rabbitmq-c.props | 1 + 6 files changed, 31 insertions(+), 4 deletions(-) mode change 100755 => 100644 configure.ac diff --git a/configure.ac b/configure.ac old mode 100755 new mode 100644 index 1d0c71f776..1bddd56c17 --- a/configure.ac +++ b/configure.ac @@ -1546,9 +1546,22 @@ PKG_CHECK_MODULES([SIGNALWIRE_CLIENT], [signalwire_client2 >= 2.0.0],[ ]) ]) -PKG_CHECK_MODULES([AMQP], [librabbitmq >= 0.5.2],[ - AM_CONDITIONAL([HAVE_AMQP],[true])],[ - AC_MSG_RESULT([no]); AM_CONDITIONAL([HAVE_AMQP],[false])]) +PKG_CHECK_MODULES([AMQP], [librabbitmq >= 0.5.2], [ + AM_CONDITIONAL([HAVE_AMQP], [true]) + # Extract the version of librabbitmq + AMQP_VERSION=`$PKG_CONFIG --modversion librabbitmq` + AC_DEFINE_UNQUOTED([AMQP_VERSION], ["$AMQP_VERSION"], [Version of librabbitmq]) + # Parse major and minor version numbers + AMQP_MAJOR_VERSION=`echo $AMQP_VERSION | cut -d. -f1` + AMQP_MINOR_VERSION=`echo $AMQP_VERSION | cut -d. -f2` + AC_DEFINE_UNQUOTED([AMQP_MAJOR_VERSION], [$AMQP_MAJOR_VERSION], [Major version of librabbitmq]) + AC_DEFINE_UNQUOTED([AMQP_MINOR_VERSION], [$AMQP_MINOR_VERSION], [Minor version of librabbitmq]) + AC_SUBST(AMQP_MAJOR_VERSION) + AC_SUBST(AMQP_MINOR_VERSION) + ], [ + AC_MSG_RESULT([no]) + AM_CONDITIONAL([HAVE_AMQP], [false]) + ]) PKG_CHECK_MODULES([H2O], [libh2o-evloop >= 0.11.0],[ AM_CONDITIONAL([HAVE_H2O],[true])],[ diff --git a/src/mod/event_handlers/mod_amqp/Makefile.am b/src/mod/event_handlers/mod_amqp/Makefile.am index 7bb93927b8..1266e9e09a 100644 --- a/src/mod/event_handlers/mod_amqp/Makefile.am +++ b/src/mod/event_handlers/mod_amqp/Makefile.am @@ -5,7 +5,7 @@ if HAVE_AMQP mod_LTLIBRARIES = mod_amqp.la mod_amqp_la_SOURCES = mod_amqp_utils.c mod_amqp_connection.c mod_amqp_producer.c mod_amqp_command.c mod_amqp_logging.c mod_amqp.c -mod_amqp_la_CFLAGS = $(AM_CFLAGS) $(AMQP_CFLAGS) +mod_amqp_la_CFLAGS = $(AM_CFLAGS) $(AMQP_CFLAGS) -DAMQP_MAJOR_VERSION=$(AMQP_MAJOR_VERSION) -DAMQP_MINOR_VERSION=$(AMQP_MINOR_VERSION) mod_amqp_la_LIBADD = $(switch_builddir)/libfreeswitch.la mod_amqp_la_LDFLAGS = -avoid-version -module -no-undefined -shared $(AMQP_LIBS) $(SWITCH_AM_LDFLAGS) diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp.h b/src/mod/event_handlers/mod_amqp/mod_amqp.h index f5c63780a4..39df8638eb 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp.h +++ b/src/mod/event_handlers/mod_amqp/mod_amqp.h @@ -40,10 +40,18 @@ #define MOD_AMQP_H #include +#define AMQP_VERSION_INT(a, b) ((a)<<8 | (b)) +#if AMQP_VERSION_INT(AMQP_MAJOR_VERSION, AMQP_MINOR_VERSION) >= AMQP_VERSION_INT(0, 12) +#include +#include +#include +#include +#else #include #include #include #include +#endif #ifndef _MSC_VER #include diff --git a/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c b/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c index 73cf09a354..758eac241e 100644 --- a/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c +++ b/src/mod/event_handlers/mod_amqp/mod_amqp_connection.c @@ -117,7 +117,9 @@ switch_status_t mod_amqp_connection_open(mod_amqp_connection_t *connections, mod while (connection_attempt && amqp_status){ if (connection_attempt->ssl_on == 1) { +#if AMQP_VERSION_INT(AMQP_MAJOR_VERSION, AMQP_MINOR_VERSION) < AMQP_VERSION_INT(0, 13) amqp_set_initialize_ssl_library(connection_attempt->ssl_on); +#endif if (!(socket = amqp_ssl_socket_new(newConnection))) { switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_CRIT, "Could not create SSL socket\n"); goto err; diff --git a/w32/rabbitmq-c-version.props b/w32/rabbitmq-c-version.props index 885ccb6986..6143d8a317 100644 --- a/w32/rabbitmq-c-version.props +++ b/w32/rabbitmq-c-version.props @@ -4,6 +4,9 @@ + 0 + 15 + 0 0.15.0 0 diff --git a/w32/rabbitmq-c.props b/w32/rabbitmq-c.props index 9ed46830da..7a96177f59 100644 --- a/w32/rabbitmq-c.props +++ b/w32/rabbitmq-c.props @@ -52,6 +52,7 @@ $(rabbitmq_c_libDir)\include;%(AdditionalIncludeDirectories) + AMQP_MAJOR_VERSION=$(rabbitmq_cMajorVersion);AMQP_MINOR_VERSION=$(rabbitmq_cMinorVersion);%(PreprocessorDefinitions) $(rabbitmq_c_libDir)\binaries\$(Platform)\$(Configuration)\;%(AdditionalLibraryDirectories)