diff --git a/controller/RabbitMQ.cpp b/controller/RabbitMQ.cpp index 41ebcc87c..73af1ccd3 100644 --- a/controller/RabbitMQ.cpp +++ b/controller/RabbitMQ.cpp @@ -51,13 +51,14 @@ void RabbitMQ::init() throw std::runtime_error("Can't create socket for RabbitMQ"); } - _status = amqp_socket_open_noblock(_socket, _mqc->host, _mqc->port, &tval); + fprintf(stderr, "RabbitMQ: amqp://%s:%s@%s:%d\n", _mqc->username.c_str(), _mqc->password.c_str(), _mqc->host.c_str(), _mqc->port); + _status = amqp_socket_open_noblock(_socket, _mqc->host.c_str(), _mqc->port, &tval); if (_status) { throw std::runtime_error("Can't connect to RabbitMQ"); } amqp_rpc_reply_t r = amqp_login(_conn, "/", 0, 131072, 0, AMQP_SASL_METHOD_PLAIN, - _mqc->username, _mqc->password); + _mqc->username.c_str(), _mqc->password.c_str()); if (r.reply_type != AMQP_RESPONSE_NORMAL) { throw std::runtime_error("RabbitMQ Login Error"); } diff --git a/controller/RabbitMQ.hpp b/controller/RabbitMQ.hpp index c60af8ecf..4c286288e 100644 --- a/controller/RabbitMQ.hpp +++ b/controller/RabbitMQ.hpp @@ -15,14 +15,15 @@ #define ZT_CONTROLLER_RABBITMQ_HPP #include "DB.hpp" +#include namespace ZeroTier { struct MQConfig { - const char *host; + std::string host; int port; - const char *username; - const char *password; + std::string username; + std::string password; }; } @@ -32,7 +33,7 @@ struct MQConfig { #include #include -#include + namespace ZeroTier { diff --git a/service/OneService.cpp b/service/OneService.cpp index 69b439ae6..18e9240ae 100644 --- a/service/OneService.cpp +++ b/service/OneService.cpp @@ -990,9 +990,9 @@ public: fprintf(stderr, "Reading RabbitMQ Config\n"); _mqc = new MQConfig; _mqc->port = rmq["port"]; - _mqc->host = OSUtils::jsonString(rmq["host"], "").c_str(); - _mqc->username = OSUtils::jsonString(rmq["username"], "").c_str(); - _mqc->password = OSUtils::jsonString(rmq["password"], "").c_str(); + _mqc->host = OSUtils::jsonString(rmq["host"], ""); + _mqc->username = OSUtils::jsonString(rmq["username"], ""); + _mqc->password = OSUtils::jsonString(rmq["password"], ""); } // Bind to wildcard instead of to specific interfaces (disables full tunnel capability)