diff --git a/build/modules.conf.in b/build/modules.conf.in
index 9c63ccdb23..d30c5f0177 100755
--- a/build/modules.conf.in
+++ b/build/modules.conf.in
@@ -91,7 +91,6 @@ event_handlers/mod_event_socket
#event_handlers/mod_odbc_cdr
#event_handlers/mod_smpp
#event_handlers/mod_snmp
-#event_handlers/mod_event_zmq
#formats/mod_imagick
formats/mod_local_stream
formats/mod_native_file
diff --git a/build/modules.conf.most b/build/modules.conf.most
index 8f8a8e2f14..40a61c8daa 100755
--- a/build/modules.conf.most
+++ b/build/modules.conf.most
@@ -88,7 +88,6 @@ event_handlers/mod_format_cdr
event_handlers/mod_json_cdr
event_handlers/mod_odbc_cdr
event_handlers/mod_snmp
-#event_handlers/mod_event_zmq
formats/mod_imagick
formats/mod_local_stream
formats/mod_native_file
diff --git a/conf/vanilla/autoload_configs/modules.conf.xml b/conf/vanilla/autoload_configs/modules.conf.xml
index 19581f57db..6363e233cb 100755
--- a/conf/vanilla/autoload_configs/modules.conf.xml
+++ b/conf/vanilla/autoload_configs/modules.conf.xml
@@ -24,7 +24,6 @@
-
diff --git a/configure.ac b/configure.ac
index 49232f5c60..7474353205 100755
--- a/configure.ac
+++ b/configure.ac
@@ -2188,7 +2188,6 @@ AC_CONFIG_FILES([Makefile
src/mod/event_handlers/mod_odbc_cdr/Makefile
src/mod/event_handlers/mod_smpp/Makefile
src/mod/event_handlers/mod_snmp/Makefile
- src/mod/event_handlers/mod_event_zmq/Makefile
src/mod/formats/mod_imagick/Makefile
src/mod/formats/mod_local_stream/Makefile
src/mod/formats/mod_native_file/Makefile
diff --git a/debian/bootstrap.sh b/debian/bootstrap.sh
index fcb007735f..ce5adea315 100755
--- a/debian/bootstrap.sh
+++ b/debian/bootstrap.sh
@@ -46,7 +46,6 @@ avoid_mods=(
endpoints/mod_opal
endpoints/mod_reference
event_handlers/mod_smpp
- event_handlers/mod_event_zmq
formats/mod_webm
sdk/autotools
xml_int/mod_xml_ldap
diff --git a/debian/control-modules b/debian/control-modules
index bf0d700871..101fab9e08 100755
--- a/debian/control-modules
+++ b/debian/control-modules
@@ -440,10 +440,6 @@ Module: event_handlers/mod_event_test
Description: mod_event_test
Adds mod_event_test.
-Module: event_handlers/mod_event_zmq
-Description: mod_event_zmq
- Adds mod_event_zmq.
-
Module: event_handlers/mod_format_cdr
Description: mod_format_cdr
Adds mod_format_cdr.
diff --git a/freeswitch.spec b/freeswitch.spec
index 495e8f1564..1d98356588 100755
--- a/freeswitch.spec
+++ b/freeswitch.spec
@@ -830,14 +830,6 @@ Requires: %{name} = %{version}-%{release}
%description event-multicast
Multicast Event System for FreeSWITCH.
-#%package event-zmq
-#Summary: ZeroMQ Event System for the FreeSWITCH open source telephony platform
-#Group: System/Libraries
-#Requires: %{name} = %{version}-%{release}
-#
-#%description event-zmq
-#ZeroMQ Event System for FreeSWITCH.
-
%package event-json-cdr
Summary: JSON CDR Logger for the FreeSWITCH open source telephony platform
Group: System/Libraries
@@ -1295,7 +1287,6 @@ EVENT_HANDLERS_MODULES="event_handlers/mod_cdr_csv event_handlers/mod_cdr_pg_csv
event_handlers/mod_event_socket event_handlers/mod_json_cdr \
event_handlers/mod_snmp"
-#### BUILD ISSUES NET RESOLVED FOR RELEASE event_handlers/mod_event_zmq
######################################################################################################################
#
# File and Audio Format Handlers
@@ -2026,9 +2017,6 @@ fi
%files event-multicast
%{MODINSTDIR}/mod_event_multicast.so*
-#%files event-zmq
-#%{MODINSTDIR}/mod_xmq.so*
-
%files event-json-cdr
%{MODINSTDIR}/mod_json_cdr.so*
diff --git a/src/mod/event_handlers/mod_event_zmq/Makefile.am b/src/mod/event_handlers/mod_event_zmq/Makefile.am
deleted file mode 100644
index 1b171a69c0..0000000000
--- a/src/mod/event_handlers/mod_event_zmq/Makefile.am
+++ /dev/null
@@ -1,34 +0,0 @@
-include $(top_srcdir)/build/modmake.rulesam
-MODNAME=mod_event_zmq
-ZMQ=zeromq-2.1.9
-
-ZMQ_BASEURL=http://download.zeromq.org
-ZMQ_BASEURL_ALT=http://download.zeromq.org/historic
-
-ZMQ_DIR=$(switch_srcdir)/libs/$(ZMQ)
-ZMQ_BUILDDIR=$(switch_builddir)/libs/$(ZMQ)
-ZMQ_LA=$(ZMQ_BUILDDIR)/src/libzmq.la
-
-mod_LTLIBRARIES = mod_event_zmq.la
-mod_event_zmq_la_SOURCES = mod_event_zmq.cpp
-mod_event_zmq_la_CFLAGS = $(AM_CFLAGS)
-mod_event_zmq_la_CPPFLAGS = $(AM_CPPFLAGS) -I$(ZMQ_DIR)/include -I$(switch_srcdir)/libs/libteletone/src/
-mod_event_zmq_la_LIBADD = $(switch_builddir)/libfreeswitch.la $(ZMQ_LA)
-mod_event_zmq_la_LDFLAGS = -avoid-version -module -no-undefined -shared
-
-BUILT_SOURCES=$(ZMQ_LA)
-
-$(ZMQ_DIR):
- $(GETLIB) $(ZMQ_BASEURL) $(ZMQ).tar.gz || $(GETLIB) $(ZMQ_BASEURL_ALT) $(ZMQ).tar.gz
- sed -e 's:AM_CONFIG_HEADER:AC_CONFIG_HEADERS:' $(ZMQ_DIR)/configure.in > $(ZMQ_DIR)/configure.in.tmp && \
- mv $(ZMQ_DIR)/configure.in.tmp $(ZMQ_DIR)/configure.in
- cd $(ZMQ_DIR) && ./autogen.sh
-
-$(ZMQ_BUILDDIR)/Makefile: $(ZMQ_DIR)
- mkdir -p $(ZMQ_BUILDDIR)
- cd $(ZMQ_BUILDDIR) && $(DEFAULT_VARS) $(ZMQ_DIR)/configure $(DEFAULT_ARGS) --srcdir=$(ZMQ_DIR)
- $(TOUCH_TARGET)
-
-$(ZMQ_LA): $(ZMQ_BUILDDIR)/Makefile
- cd $(ZMQ_BUILDDIR) && $(MAKE)
- $(TOUCH_TARGET)
diff --git a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp
deleted file mode 100644
index b7f517bac2..0000000000
--- a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.cpp
+++ /dev/null
@@ -1,193 +0,0 @@
-#include
-#include
-#include
-#include
-#include
-
-#include "mod_event_zmq.h"
-
-namespace mod_event_zmq {
-
-// Handles publishing events out to clients
-class ZmqEventPublisher {
-public:
- ZmqEventPublisher(zmq::context_t &context) :
- _publisher(context, ZMQ_PUB)
- {
- _publisher.bind("tcp://*:5556");
-
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Listening for clients\n");
- }
-
- void PublishEvent(const switch_event_t *event) {
- // Serialize the event into a JSON string
- char* pjson;
- switch_event_serialize_json(const_cast(event), &pjson);
-
- // Use the JSON string as the message body
- zmq::message_t msg(pjson, strlen(pjson), free_message_data, NULL);
-
- // Send the message
- _publisher.send(msg);
- }
-
-private:
- static void free_message_data(void *data, void *hint) {
- free (data);
- }
-
- zmq::socket_t _publisher;
-};
-
-class char_msg : public zmq::message_t {
-public:
- char_msg() : zmq::message_t(sizeof(char)) { }
- char_msg(char data) : zmq::message_t(sizeof(char)) {
- *char_data() = data;
- }
-
- char* char_data() {
- return static_cast(this->data());
- }
-};
-
-// Handles global inititalization and teardown of the module
-class ZmqModule {
-public:
- ZmqModule(switch_loadable_module_interface_t **module_interface, switch_memory_pool_t *pool) :
- _context(1), _term_rep(_context, ZMQ_REP), _term_req(_context, ZMQ_REQ), _publisher(_context) {
-
- // Set up the term messaging connection
- _term_rep.bind(TERM_URI);
- _term_req.connect(TERM_URI);
-
- // Subscribe to all switch events of any subclass
- // Store a pointer to ourself in the user data
- if (switch_event_bind_removable(modname, SWITCH_EVENT_ALL, SWITCH_EVENT_SUBCLASS_ANY, event_handler, static_cast(&_publisher), &_node)
- != SWITCH_STATUS_SUCCESS) {
- throw std::runtime_error("Couldn't bind to switch events.");
- }
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Subscribed to events\n");
-
- // Create our module interface registration
- *module_interface = switch_loadable_module_create_module_interface(pool, modname);
-
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Module loaded\n");
- }
-
- void Listen() {
- // All we do is sit here and block the run loop thread so it doesn't return
- // it seems that if you want to keep your module running you can't return from the run loop
-
- char_msg msg;
- while(true) {
- // Listen for term message
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Entered run loop, waiting for term message\n");
- _term_rep.recv(&msg);
- if(*msg.char_data() == MODULE_TERM_REQ_MESSAGE) {
- // Ack term message
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Got term message, sending ack and leaving run loop\n");
-
- *msg.char_data() = MODULE_TERM_ACK_MESSAGE;
- _term_rep.send(msg);
-
- break;
- }
- }
- }
-
- void Shutdown() {
- // Send term message
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Shutdown requested, sending term message to runloop\n");
- char_msg msg(MODULE_TERM_REQ_MESSAGE);
- _term_req.send(msg);
-
- while(true) {
- // Wait for the term ack message
- _term_req.recv(&msg);
- if(*msg.char_data() == MODULE_TERM_ACK_MESSAGE) {
- // Continue shutdown
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Got term ack message, continuing shutdown\n");
- break;
- }
- }
- }
-
- ~ZmqModule() {
- // Unsubscribe from the switch events
- switch_event_unbind(&_node);
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_DEBUG, "Module shut down\n");
- }
-
-private:
- // Dispatches events to the publisher
- static void event_handler(switch_event_t *event) {
- try {
- ZmqEventPublisher *publisher = static_cast(event->bind_user_data);
- publisher->PublishEvent(event);
- } catch(std::exception ex) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Error publishing event via 0MQ: %s\n", ex.what());
- } catch(...) { // Exceptions must not propogate to C caller
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_WARNING, "Unknown error publishing event via 0MQ\n");
- }
- }
-
- switch_event_node_t *_node;
-
- zmq::context_t _context;
- zmq::socket_t _term_rep;
- zmq::socket_t _term_req;
-
- ZmqEventPublisher _publisher;
-};
-
-//*****************************//
-// GLOBALS //
-//*****************************//
-std::auto_ptr module;
-
-
-//*****************************//
-// Module interface funtions //
-//*****************************//
-SWITCH_MODULE_LOAD_FUNCTION(load) {
- try {
- module.reset(new ZmqModule(module_interface, pool));
- return SWITCH_STATUS_SUCCESS;
- } catch(...) { // Exceptions must not propogate to C caller
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error loading 0MQ module\n");
- return SWITCH_STATUS_GENERR;
- }
-
-}
-
-SWITCH_MODULE_RUNTIME_FUNCTION(runtime) {
- try {
- // Begin listening for clients
- module->Listen();
- } catch(std::exception &ex) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error listening for clients: %s\n", ex.what());
- } catch(...) { // Exceptions must not propogate to C caller
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown error listening for clients\n");
- }
-
- // Tell the switch to stop calling this runtime loop
- return SWITCH_STATUS_TERM;
-}
-
-SWITCH_MODULE_SHUTDOWN_FUNCTION(shutdown) {
- try {
- // Tell the module to shutdown
- module->Shutdown();
-
- // Free the module object
- module.reset();
- } catch(std::exception &ex) {
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Error shutting down module: %s\n", ex.what());
- } catch(...) { // Exceptions must not propogate to C caller
- switch_log_printf(SWITCH_CHANNEL_LOG, SWITCH_LOG_ERROR, "Unknown error shutting down module\n");
- }
- return SWITCH_STATUS_SUCCESS;
-}
-
-}
diff --git a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h b/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h
deleted file mode 100644
index a60c720d74..0000000000
--- a/src/mod/event_handlers/mod_event_zmq/mod_event_zmq.h
+++ /dev/null
@@ -1,20 +0,0 @@
-#ifndef MOD_EVENT_ZMQ_H
-#define MOD_EVENT_ZMQ_H
-
-namespace mod_event_zmq {
-static const char MODULE_TERM_REQ_MESSAGE = 1;
-static const char MODULE_TERM_ACK_MESSAGE = 2;
-
-static const char *TERM_URI = "inproc://mod_event_zmq_term";
-
-SWITCH_MODULE_LOAD_FUNCTION(load);
-SWITCH_MODULE_SHUTDOWN_FUNCTION(shutdown);
-SWITCH_MODULE_RUNTIME_FUNCTION(runtime);
-
-extern "C" {
-SWITCH_MODULE_DEFINITION(mod_event_zmq, load, shutdown, runtime);
-};
-
-}
-
-#endif // MOD_EVENT_ZMQ_H