Repository: nifi-minifi-cpp Updated Branches: refs/heads/master c99b3fa49 -> 8e153bed7
MINIFICPP-405: RPG bind to local interface This closes #272. Signed-off-by: Bin Qiu <benqiu2...@gmail.com> Project: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/repo Commit: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/commit/8e153bed Tree: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/tree/8e153bed Diff: http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/diff/8e153bed Branch: refs/heads/master Commit: 8e153bed7fc782e1de1e782543016ebda3579d66 Parents: c99b3fa Author: Bin Qiu <benqiu2...@gmail.com> Authored: Mon Feb 26 07:21:24 2018 -0800 Committer: Bin Qiu <benqiu2...@gmail.com> Committed: Mon Mar 5 20:17:08 2018 -0800 ---------------------------------------------------------------------- extensions/http-curl/client/HTTPClient.h | 4 +++ extensions/http-curl/sitetosite/HTTPProtocol.h | 4 +++ libminifi/include/RemoteProcessorGroupPort.h | 9 +++++ libminifi/include/core/ProcessGroup.h | 9 +++++ libminifi/include/io/ClientSocket.h | 5 +++ libminifi/include/io/DataStream.h | 4 +++ libminifi/include/sitetosite/Peer.h | 20 +++++++++-- libminifi/include/sitetosite/SiteToSite.h | 13 +++++++- .../include/sitetosite/SiteToSiteFactory.h | 6 ++-- libminifi/src/RemoteProcessorGroupPort.cpp | 9 ++--- libminifi/src/core/yaml/YamlConfiguration.cpp | 8 +++++ libminifi/src/io/ClientSocket.cpp | 35 ++++++++++++++++++++ libminifi/src/sitetosite/Peer.cpp | 3 ++ libminifi/test/unit/Site2SiteTests.cpp | 8 ++--- 14 files changed, 123 insertions(+), 14 deletions(-) ---------------------------------------------------------------------- http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/extensions/http-curl/client/HTTPClient.h ---------------------------------------------------------------------- diff --git a/extensions/http-curl/client/HTTPClient.h b/extensions/http-curl/client/HTTPClient.h index e5545c3..eabd7c2 100644 --- a/extensions/http-curl/client/HTTPClient.h +++ b/extensions/http-curl/client/HTTPClient.h @@ -131,6 +131,10 @@ class HTTPClient : public BaseHTTPClient, public core::Connectable { return url_; } + void setInterface(const std::string &interface) { + curl_easy_setopt(http_session_, CURLOPT_INTERFACE, interface.c_str()); + } + const std::vector<std::string> &getHeaders() override { return header_response_.header_tokens_; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/extensions/http-curl/sitetosite/HTTPProtocol.h ---------------------------------------------------------------------- diff --git a/extensions/http-curl/sitetosite/HTTPProtocol.h b/extensions/http-curl/sitetosite/HTTPProtocol.h index 32074f0..7ac4893 100644 --- a/extensions/http-curl/sitetosite/HTTPProtocol.h +++ b/extensions/http-curl/sitetosite/HTTPProtocol.h @@ -182,6 +182,10 @@ class HttpSiteToSiteClient : public sitetosite::SiteToSiteClient { // batch count, size, and duratin don't appear to be set through the interfaces. } } + if (!this->peer_->getInterface().empty()) { + logger_->log_info("HTTP Site2Site bind local network interface", this->peer_->getInterface()); + http_client_->setInterface(this->peer_->getInterface()); + } return http_client_; } http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/RemoteProcessorGroupPort.h ---------------------------------------------------------------------- diff --git a/libminifi/include/RemoteProcessorGroupPort.h b/libminifi/include/RemoteProcessorGroupPort.h index c1dfea1..14200ee 100644 --- a/libminifi/include/RemoteProcessorGroupPort.h +++ b/libminifi/include/RemoteProcessorGroupPort.h @@ -129,6 +129,13 @@ class RemoteProcessorGroupPort : public core::Processor { void setTransmitting(bool val) { transmitting_ = val; } + // setInterface + void setInterface(const std::string &interface) { + local_network_interface_ = interface; + } + std::string getInterface() { + return local_network_interface_; + } // setURL void setURL(std::string val) { url_ = val; @@ -165,6 +172,8 @@ class RemoteProcessorGroupPort : public core::Processor { std::atomic<bool> transmitting_; // timeout uint64_t timeout_; + // local network interface + std::string local_network_interface_; uuid_t protocol_uuid_; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/core/ProcessGroup.h ---------------------------------------------------------------------- diff --git a/libminifi/include/core/ProcessGroup.h b/libminifi/include/core/ProcessGroup.h index 93caab9..d6b7510 100644 --- a/libminifi/include/core/ProcessGroup.h +++ b/libminifi/include/core/ProcessGroup.h @@ -90,6 +90,13 @@ class ProcessGroup { uint64_t getTimeOut() { return timeOut_; } + // setInterface + void setInterface(std::string &interface) { + local_network_interface_ = interface; + } + std::string getInterface() { + return local_network_interface_; + } // Set Processor yield period in MilliSecond void setYieldPeriodMsec(uint64_t period) { yield_period_msec_ = period; @@ -190,6 +197,8 @@ class ProcessGroup { std::atomic<uint64_t> timeOut_; // URL std::string url_; + // local network interface + std::string local_network_interface_; // Transmitting std::atomic<bool> transmitting_; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/io/ClientSocket.h ---------------------------------------------------------------------- diff --git a/libminifi/include/io/ClientSocket.h b/libminifi/include/io/ClientSocket.h index 263865c..32f04a5 100644 --- a/libminifi/include/io/ClientSocket.h +++ b/libminifi/include/io/ClientSocket.h @@ -91,6 +91,10 @@ class Socket : public BaseStream { */ virtual int16_t initialize(); + virtual void setInterface(std::string &interface) { + local_network_interface_ = interface; + } + /** * Sets the non blocking flag on the file descriptor. */ @@ -256,6 +260,7 @@ class Socket : public BaseStream { uint16_t port_; bool is_loopback_only_; + std::string local_network_interface_; // connection information int32_t socket_file_descriptor_; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/io/DataStream.h ---------------------------------------------------------------------- diff --git a/libminifi/include/io/DataStream.h b/libminifi/include/io/DataStream.h index 78874f4..a61ff5a 100644 --- a/libminifi/include/io/DataStream.h +++ b/libminifi/include/io/DataStream.h @@ -68,6 +68,10 @@ class DataStream { virtual void closeStream() { } + + virtual void setInterface(std::string &interface) { + } + /** * Reads data and places it into buf * @param buf buffer in which we extract data http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/sitetosite/Peer.h ---------------------------------------------------------------------- diff --git a/libminifi/include/sitetosite/Peer.h b/libminifi/include/sitetosite/Peer.h index e33b9c6..cc097b6 100644 --- a/libminifi/include/sitetosite/Peer.h +++ b/libminifi/include/sitetosite/Peer.h @@ -95,6 +95,7 @@ class Peer { uint16_t port_; uuid_t port_id_; + // secore comms bool secure_; @@ -141,21 +142,23 @@ class SiteToSitePeer : public org::apache::nifi::minifi::io::BaseStream { : stream_(nullptr), host_(""), port_(-1), + local_network_interface_(""), logger_(logging::LoggerFactory<SiteToSitePeer>::getLogger()) { } /* * Create a new site2site peer */ - explicit SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream> injected_socket, const std::string host, uint16_t port) - : SiteToSitePeer(host, port) { + explicit SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream> injected_socket, const std::string host, uint16_t port, const std::string &interface) + : SiteToSitePeer(host, port, interface) { stream_ = std::move(injected_socket); } - explicit SiteToSitePeer(const std::string &host, uint16_t port) + explicit SiteToSitePeer(const std::string &host, uint16_t port, const std::string &interface) : stream_(nullptr), host_(host), port_(port), + local_network_interface_(interface), timeout_(30000), yield_expiration_(0), logger_(logging::LoggerFactory<SiteToSitePeer>::getLogger()) { @@ -168,6 +171,7 @@ class SiteToSitePeer : public org::apache::nifi::minifi::io::BaseStream { : stream_(ss.stream_.release()), host_(std::move(ss.host_)), port_(std::move(ss.port_)), + local_network_interface_(std::move(ss.local_network_interface_)), logger_(std::move(ss.logger_)) { yield_expiration_.store(ss.yield_expiration_); timeout_.store(ss.timeout_); @@ -185,6 +189,13 @@ class SiteToSitePeer : public org::apache::nifi::minifi::io::BaseStream { std::string getURL() { return url_; } + // setInterface + void setInterface(std::string &interface) { + local_network_interface_ = interface; + } + std::string getInterface() { + return local_network_interface_; + } // Get Processor yield period in MilliSecond uint64_t getYieldPeriodMsec(void) { return (yield_period_msec_); @@ -334,6 +345,7 @@ class SiteToSitePeer : public org::apache::nifi::minifi::io::BaseStream { stream_ = std::unique_ptr<org::apache::nifi::minifi::io::DataStream>(other.stream_.release()); host_ = std::move(other.host_); port_ = std::move(other.port_); + local_network_interface_ = std::move(other.local_network_interface_); yield_expiration_ = 0; timeout_ = 30000; // 30 seconds url_ = "nifi://" + host_ + ":" + std::to_string(port_); @@ -354,6 +366,8 @@ class SiteToSitePeer : public org::apache::nifi::minifi::io::BaseStream { uint16_t port_; + std::string local_network_interface_; + // Mutex for protection std::mutex mutex_; // URL http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/sitetosite/SiteToSite.h ---------------------------------------------------------------------- diff --git a/libminifi/include/sitetosite/SiteToSite.h b/libminifi/include/sitetosite/SiteToSite.h index b7e5ce0..ec4cf44 100644 --- a/libminifi/include/sitetosite/SiteToSite.h +++ b/libminifi/include/sitetosite/SiteToSite.h @@ -331,9 +331,10 @@ class Transaction { class SiteToSiteClientConfiguration { public: - SiteToSiteClientConfiguration(std::shared_ptr<io::StreamFactory> stream_factory, const std::shared_ptr<Peer> &peer, CLIENT_TYPE type = RAW) + SiteToSiteClientConfiguration(std::shared_ptr<io::StreamFactory> stream_factory, const std::shared_ptr<Peer> &peer, const std::string &interface, CLIENT_TYPE type = RAW) : stream_factory_(stream_factory), peer_(peer), + local_network_interface_(interface), ssl_service_(nullptr) { client_type_ = type; } @@ -360,6 +361,14 @@ class SiteToSiteClientConfiguration { return stream_factory_; } + // setInterface + void setInterface(std::string &interface) { + local_network_interface_ = interface; + } + std::string getInterface() const { + return local_network_interface_; + } + protected: std::shared_ptr<io::StreamFactory> stream_factory_; @@ -368,6 +377,8 @@ class SiteToSiteClientConfiguration { CLIENT_TYPE client_type_; + std::string local_network_interface_; + // secore comms std::shared_ptr<controllers::SSLContextService> ssl_service_; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/include/sitetosite/SiteToSiteFactory.h ---------------------------------------------------------------------- diff --git a/libminifi/include/sitetosite/SiteToSiteFactory.h b/libminifi/include/sitetosite/SiteToSiteFactory.h index 9a48b93..73959bb 100644 --- a/libminifi/include/sitetosite/SiteToSiteFactory.h +++ b/libminifi/include/sitetosite/SiteToSiteFactory.h @@ -44,7 +44,8 @@ static std::unique_ptr<SiteToSitePeer> createStreamingPeer(const SiteToSiteClien str = std::unique_ptr<org::apache::nifi::minifi::io::DataStream>( client_configuration.getStreamFactory()->createSocket(client_configuration.getPeer()->getHost(), client_configuration.getPeer()->getPort())); } - auto peer = std::unique_ptr<SiteToSitePeer>(new SiteToSitePeer(std::move(str), client_configuration.getPeer()->getHost(), client_configuration.getPeer()->getPort())); + auto peer = std::unique_ptr<SiteToSitePeer>(new SiteToSitePeer(std::move(str), client_configuration.getPeer()->getHost(), client_configuration.getPeer()->getPort(), + client_configuration.getInterface())); return peer; } @@ -79,7 +80,8 @@ static std::unique_ptr<SiteToSiteClient> createClient(const SiteToSiteClientConf if (nullptr != http_protocol) { auto ptr = std::unique_ptr<SiteToSiteClient>(static_cast<SiteToSiteClient*>(http_protocol)); ptr->setSSLContextService(client_configuration.getSecurityContext()); - auto peer = std::unique_ptr<SiteToSitePeer>(new SiteToSitePeer(client_configuration.getPeer()->getHost(), client_configuration.getPeer()->getPort())); + auto peer = std::unique_ptr<SiteToSitePeer>(new SiteToSitePeer(client_configuration.getPeer()->getHost(), client_configuration.getPeer()->getPort(), + client_configuration.getInterface())); char idStr[37]; uuid_unparse_lower(uuid, idStr); ptr->setPortId(uuid); http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/src/RemoteProcessorGroupPort.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/RemoteProcessorGroupPort.cpp b/libminifi/src/RemoteProcessorGroupPort.cpp index c7cc191..bbf697f 100644 --- a/libminifi/src/RemoteProcessorGroupPort.cpp +++ b/libminifi/src/RemoteProcessorGroupPort.cpp @@ -67,12 +67,12 @@ std::unique_ptr<sitetosite::SiteToSiteClient> RemoteProcessorGroupPort::getNextP if (create) { // create if (url_.empty()) { - sitetosite::SiteToSiteClientConfiguration config(stream_factory_, std::make_shared<sitetosite::Peer>(protocol_uuid_, host_, port_, ssl_service != nullptr), client_type_); + sitetosite::SiteToSiteClientConfiguration config(stream_factory_, std::make_shared<sitetosite::Peer>(protocol_uuid_, host_, port_, ssl_service != nullptr), this->getInterface(), client_type_); nextProtocol = sitetosite::createClient(config); } else if (peer_index_ >= 0) { std::lock_guard<std::mutex> lock(peer_mutex_); logger_->log_debug("Creating client from peer %ll", peer_index_.load()); - sitetosite::SiteToSiteClientConfiguration config(stream_factory_, peers_[this->peer_index_].getPeer(), client_type_); + sitetosite::SiteToSiteClientConfiguration config(stream_factory_, peers_[this->peer_index_].getPeer(), local_network_interface_, client_type_); config.setSecurityContext(ssl_service); peer_index_++; if (peer_index_ >= static_cast<int>(peers_.size())) { @@ -170,7 +170,7 @@ void RemoteProcessorGroupPort::onSchedule(const std::shared_ptr<core::ProcessCon count = max_concurrent_tasks_; for (uint32_t i = 0; i < count; i++) { std::unique_ptr<sitetosite::SiteToSiteClient> nextProtocol = nullptr; - sitetosite::SiteToSiteClientConfiguration config(stream_factory_, peers_[this->peer_index_].getPeer(), client_type_); + sitetosite::SiteToSiteClientConfiguration config(stream_factory_, peers_[this->peer_index_].getPeer(), this->getInterface(), client_type_); config.setSecurityContext(ssl_service); peer_index_++; if (peer_index_ >= static_cast<int>(peers_.size())) { @@ -349,7 +349,8 @@ void RemoteProcessorGroupPort::refreshPeerList() { this->peers_.clear(); std::unique_ptr<sitetosite::SiteToSiteClient> protocol; - sitetosite::SiteToSiteClientConfiguration config(stream_factory_, std::make_shared<sitetosite::Peer>(protocol_uuid_, host_, site2site_port_, ssl_service != nullptr), client_type_); + sitetosite::SiteToSiteClientConfiguration config(stream_factory_, std::make_shared<sitetosite::Peer>(protocol_uuid_, host_, + site2site_port_, ssl_service != nullptr), this->getInterface(), client_type_); config.setSecurityContext(ssl_service); protocol = sitetosite::createClient(config); http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/src/core/yaml/YamlConfiguration.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/core/yaml/YamlConfiguration.cpp b/libminifi/src/core/yaml/YamlConfiguration.cpp index 0526643..8f4820f 100644 --- a/libminifi/src/core/yaml/YamlConfiguration.cpp +++ b/libminifi/src/core/yaml/YamlConfiguration.cpp @@ -299,6 +299,12 @@ void YamlConfiguration::parseRemoteProcessGroupYaml(YAML::Node *rpgNode, core::P } } + if (currRpgNode["local network interface"]) { + std::string interface = currRpgNode["local network interface"].as<std::string>(); + logger_->log_debug("parseRemoteProcessGroupYaml: local network interface => [%s]", interface); + group->setInterface(interface); + } + group->setTransmitting(true); group->setURL(url); @@ -649,6 +655,8 @@ void YamlConfiguration::parsePortYaml(YAML::Node *portNode, port->setTransmitting(true); processor->setYieldPeriodMsec(parent->getYieldPeriodMsec()); processor->initialize(); + if (!parent->getInterface().empty()) + port->setInterface(parent->getInterface()); // handle port properties YAML::Node nodeVal = portNode->as<YAML::Node>(); http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/src/io/ClientSocket.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/io/ClientSocket.cpp b/libminifi/src/io/ClientSocket.cpp index a382cda..12dfd98 100644 --- a/libminifi/src/io/ClientSocket.cpp +++ b/libminifi/src/io/ClientSocket.cpp @@ -22,6 +22,9 @@ #include <sys/socket.h> #include <netinet/in.h> #include <arpa/inet.h> +#include <sys/ioctl.h> +#include <net/if.h> +#include <ifaddrs.h> #include <unistd.h> #include <cstdio> #include <memory> @@ -46,6 +49,7 @@ Socket::Socket(const std::shared_ptr<SocketContext> &context, const std::string socket_file_descriptor_(-1), socket_max_(0), is_loopback_only_(false), + local_network_interface_(""), listeners_(listeners), canonical_hostname_(""), nonBlocking_(false), @@ -62,6 +66,7 @@ Socket::Socket(const Socket &&other) : requested_hostname_(std::move(other.requested_hostname_)), port_(std::move(other.port_)), is_loopback_only_(false), + local_network_interface_(""), addr_info_(std::move(other.addr_info_)), socket_file_descriptor_(other.socket_file_descriptor_), socket_max_(other.socket_max_.load()), @@ -103,6 +108,36 @@ int8_t Socket::createConnection(const addrinfo *p, in_addr_t &addr) { setSocketOptions(socket_file_descriptor_); + if (listeners_ <= 0 && !local_network_interface_.empty()) { + // bind to local network interface + ifaddrs* list = NULL; + ifaddrs* item = NULL; + ifaddrs* itemFound = NULL; + int result = getifaddrs(&list); + if (result == 0) { + item = list; + while (item) { + if ((item->ifa_addr != NULL) && (item->ifa_name != NULL) && (AF_INET == item->ifa_addr->sa_family)) { + if (strcmp(item->ifa_name, local_network_interface_.c_str()) == 0) { + itemFound = item; + break; + } + } + item = item->ifa_next; + } + + if (itemFound != NULL) { + result = bind(socket_file_descriptor_, itemFound->ifa_addr, sizeof(struct sockaddr_in)); + if (result < 0) + logger_->log_info("Bind to interface %s failed %s", local_network_interface_, strerror(errno)); + else + logger_->log_info("Bind to interface %s", local_network_interface_); + } + + freeifaddrs(list); + } + } + if (listeners_ > 0) { struct sockaddr_in *sa_loc = (struct sockaddr_in*) p->ai_addr; sa_loc->sin_family = AF_INET; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/src/sitetosite/Peer.cpp ---------------------------------------------------------------------- diff --git a/libminifi/src/sitetosite/Peer.cpp b/libminifi/src/sitetosite/Peer.cpp index e8678d7..b0bfca2 100644 --- a/libminifi/src/sitetosite/Peer.cpp +++ b/libminifi/src/sitetosite/Peer.cpp @@ -41,6 +41,9 @@ bool SiteToSitePeer::Open() { if (IsNullOrEmpty(host_)) return false; + if (!this->local_network_interface_.empty()) + stream_->setInterface(local_network_interface_); + if (stream_->initialize() < 0) return false; http://git-wip-us.apache.org/repos/asf/nifi-minifi-cpp/blob/8e153bed/libminifi/test/unit/Site2SiteTests.cpp ---------------------------------------------------------------------- diff --git a/libminifi/test/unit/Site2SiteTests.cpp b/libminifi/test/unit/Site2SiteTests.cpp index d1844ee..ff2b44a 100644 --- a/libminifi/test/unit/Site2SiteTests.cpp +++ b/libminifi/test/unit/Site2SiteTests.cpp @@ -32,7 +32,7 @@ TEST_CASE("TestSetPortId", "[S2S1]") { std::unique_ptr<minifi::sitetosite::SiteToSitePeer> peer = std::unique_ptr<minifi::sitetosite::SiteToSitePeer>( - new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream>(new org::apache::nifi::minifi::io::DataStream()), "fake_host", 65433)); + new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream>(new org::apache::nifi::minifi::io::DataStream()), "fake_host", 65433, "")); minifi::sitetosite::RawSiteToSiteClient protocol(std::move(peer)); @@ -49,7 +49,7 @@ TEST_CASE("TestSetPortId", "[S2S1]") { TEST_CASE("TestSetPortIdUppercase", "[S2S2]") { std::unique_ptr<minifi::sitetosite::SiteToSitePeer> peer = std::unique_ptr<minifi::sitetosite::SiteToSitePeer>( - new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream>(new org::apache::nifi::minifi::io::DataStream()), "fake_host", 65433)); + new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<org::apache::nifi::minifi::io::DataStream>(new org::apache::nifi::minifi::io::DataStream()), "fake_host", 65433, "")); minifi::sitetosite::RawSiteToSiteClient protocol(std::move(peer)); @@ -94,7 +94,7 @@ TEST_CASE("TestSiteToSiteVerifySend", "[S2S3]") { sunny_path_bootstrap(collector); std::unique_ptr<minifi::sitetosite::SiteToSitePeer> peer = std::unique_ptr<minifi::sitetosite::SiteToSitePeer>( - new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<minifi::io::DataStream>(new org::apache::nifi::minifi::io::BaseStream(collector)), "fake_host", 65433)); + new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<minifi::io::DataStream>(new org::apache::nifi::minifi::io::BaseStream(collector)), "fake_host", 65433, "")); minifi::sitetosite::RawSiteToSiteClient protocol(std::move(peer)); @@ -163,7 +163,7 @@ TEST_CASE("TestSiteToSiteVerifyNegotiationFail", "[S2S4]") { collector->push_response(resp_code); std::unique_ptr<minifi::sitetosite::SiteToSitePeer> peer = std::unique_ptr<minifi::sitetosite::SiteToSitePeer>( - new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<minifi::io::DataStream>(new org::apache::nifi::minifi::io::BaseStream(collector)), "fake_host", 65433)); + new minifi::sitetosite::SiteToSitePeer(std::unique_ptr<minifi::io::DataStream>(new org::apache::nifi::minifi::io::BaseStream(collector)), "fake_host", 65433, "")); minifi::sitetosite::RawSiteToSiteClient protocol(std::move(peer));