From b896455a86a0242593e40fc6abae0ecc5b42c33d Mon Sep 17 00:00:00 2001 From: Henry Winkel Date: Wed, 1 Nov 2023 09:16:59 +0100 Subject: [PATCH] FIX: fixed issue that no address was set and change to that the callback is only called on a received message --- src/WHISPER/InternalUDPListener.cpp | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/src/WHISPER/InternalUDPListener.cpp b/src/WHISPER/InternalUDPListener.cpp index 4b9b7b9..cf41680 100644 --- a/src/WHISPER/InternalUDPListener.cpp +++ b/src/WHISPER/InternalUDPListener.cpp @@ -60,7 +60,7 @@ void InternalUDPListener::connect() receiverSocket_ = std::make_shared(ctx,zmq::socket_type::dish); std::string portAsString = std::to_string(port_); - receiverSocket_->bind("udp://*:"+portAsString); + receiverSocket_->bind("udp://"+address_+":"+portAsString); ///used to set a custom time out to the socket receiverSocket_->set(zmq::sockopt::rcvtimeo,100); } @@ -88,14 +88,17 @@ void InternalUDPListener::listen() res = receiverSocket_->recv(msg,zmq::recv_flags::none); // std::string message = msg.to_string(); - if (useHandl_ == true) + if(res.has_value()) { - auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); - } else if(receiverQueue_ != nullptr) - { - WHISPER::Message receivedMessage(msg.to_string()); - receiverQueue_->addElement(receivedMessage); - } + if (useHandl_ == true) + { + auto i = std::async(std::launch::async, MessageHandle_, msg.to_string()); + } else if(receiverQueue_ != nullptr) + { + WHISPER::Message receivedMessage(msg.to_string()); + receiverQueue_->addElement(receivedMessage); + } + } } listening_ = false;