From 7b61bed0e0624fb33409c29dda5462029b42393b Mon Sep 17 00:00:00 2001 From: dec05eba Date: Sat, 9 Jun 2018 21:32:20 +0200 Subject: Fix crash in send method, add debug --- include/sibs/DirectConnection.hpp | 2 +- src/BootstrapNode.cpp | 9 +++++++-- src/DirectConnection.cpp | 2 +- 3 files changed, 9 insertions(+), 4 deletions(-) diff --git a/include/sibs/DirectConnection.hpp b/include/sibs/DirectConnection.hpp index 900d419..0ac5724 100644 --- a/include/sibs/DirectConnection.hpp +++ b/include/sibs/DirectConnection.hpp @@ -51,7 +51,7 @@ namespace sibs void connectServer(const Ipv4 &address, PubSubConnectCallback connectCallbackFunc, PubSubReceiveDataCallback receiveDataCallbackFunc); // Throws ConnectionException on error void connect(const Ipv4 &address, PubSubConnectCallback connectCallbackFunc, PubSubReceiveDataCallback receiveDataCallbackFunc); - void send(const std::shared_ptr &peer, std::shared_ptr> data, PubSubSendDataCallback sendDataCallbackFunc = nullptr); + void send(const std::shared_ptr peer, std::shared_ptr> data, PubSubSendDataCallback sendDataCallbackFunc = nullptr); protected: int createSocket(const Ipv4 &addressToBind, bool rendezvous, bool reuseAddr, bool bind = true); private: diff --git a/src/BootstrapNode.cpp b/src/BootstrapNode.cpp index f7fe738..9edf008 100644 --- a/src/BootstrapNode.cpp +++ b/src/BootstrapNode.cpp @@ -88,16 +88,21 @@ namespace sibs serializer.add((u16)newPeer->address.address.sin_port); std::shared_ptr> serializerData = std::make_shared>(std::move(serializer.getBuffer())); + auto sendCallbackFunc = [](PubSubResult result, const std::string &resultStr) + { + Log::debug("BootstrapNode::peerSubscribe send result: %d, result string: %s", result, resultStr.c_str()); + }; + sibs::SafeSerializer newPeerSerializer; newPeerSerializer.add(pubsubKey.data.data(), pubsubKey.data.size()); for(auto &peer : peers) { - connections.send(peer, serializerData); + connections.send(peer, serializerData, sendCallbackFunc); newPeerSerializer.add((u32)peer->address.address.sin_family); newPeerSerializer.add((u32)peer->address.address.sin_addr.s_addr); newPeerSerializer.add((u16)peer->address.address.sin_port); } peers.push_back(newPeer); - connections.send(newPeer, std::make_shared>(std::move(newPeerSerializer.getBuffer()))); + connections.send(newPeer, std::make_shared>(std::move(newPeerSerializer.getBuffer())), sendCallbackFunc); } } diff --git a/src/DirectConnection.cpp b/src/DirectConnection.cpp index 03fc27c..3108410 100644 --- a/src/DirectConnection.cpp +++ b/src/DirectConnection.cpp @@ -121,7 +121,7 @@ namespace sibs }).detach(); } - void DirectConnections::send(const std::shared_ptr &peer, std::shared_ptr> data, PubSubSendDataCallback sendDataCallbackFunc) + void DirectConnections::send(const std::shared_ptr peer, std::shared_ptr> data, PubSubSendDataCallback sendDataCallbackFunc) { // TODO: Replace this with light-weight threads (fibers)? std::thread([peer, data, sendDataCallbackFunc]() -- cgit v1.2.3