diff --git a/sockhand.cpp b/sockhand.cpp index e27f37a..c23156e 100644 --- a/sockhand.cpp +++ b/sockhand.cpp @@ -33,7 +33,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, in uxlogger.Error(setAddrRes.error()); return; } - auto setPrefixRes = interface.SetIP4Netmask(prefix); + auto setPrefixRes = interface.SetIP4Netmask(30); if (!setPrefixRes) { uxlogger.Error(setPrefixRes.error()); return; @@ -45,39 +45,52 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, in } std::thread recvThr(&SocketHandler::RecvMessages, this); recvThr.detach(); + { + uxlogger.Log(std::format("Send debug empty message")); + MessageHeader header(0); + auto rawHeader = header.Encode(); + int wsize; + if ((wsize = write(sock, rawHeader.data(), rawHeader.size())) < 0) { + int errnoCopy = errno; + std::string error = std::strerror(errnoCopy); + uxlogger.Log(std::format("Write message error: {}", error)); + return; + } + } + { + uxlogger.Log(std::format("Send address message")); + uxcontrol::AddressMessage addrMsg; + auto meta = addrMsg.mutable_meta(); + meta->set_kind(tunAddressMsg); + addrMsg.set_address(raddr); + addrMsg.set_prefix(30); + std::string rawMessage; + addrMsg.SerializeToString(&rawMessage); - std::thread sendThr(&SocketHandler::SendMessages, this, raddr, prefix); + MessageHeader header(rawMessage.size()); + auto rawHeader = header.Encode(); + std::string rawPacket; + rawPacket.append(rawHeader); + rawPacket.append(rawMessage); + + int wsize; + if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) { + int errnoCopy = errno; + std::string error = std::strerror(errnoCopy); + uxlogger.Log(std::format("Write message error: {}", error)); + return; + } + } + + std::thread sendThr(&SocketHandler::SendMessages, this, raddr); sendThr.detach(); done.acquire(); uxlogger.Log("Handler done"); } -void SocketHandler::SendMessages(std::string raddr, int prefix) { +void SocketHandler::SendMessages(std::string raddr) { - uxlogger.Log(std::format("Send address message")); - - uxcontrol::AddressMessage addrMsg; - auto meta = addrMsg.mutable_meta(); - meta->set_kind(tunAddressMsg); - addrMsg.set_address(raddr); - addrMsg.set_prefix(prefix); - std::string rawMessage; - addrMsg.SerializeToString(&rawMessage); - - MessageHeader header(rawMessage.size()); - auto rawHeader = header.Encode(); - std::string rawPacket; - rawPacket.append(rawHeader); - rawPacket.append(rawMessage); - - int wsize; - if ((wsize = write(sock, rawPacket.data(), rawPacket.size())) < 0) { - int errnoCopy = errno; - std::string error = std::strerror(errnoCopy); - uxlogger.Log(std::format("Write message error: {}", error)); - return; - } while (true) { auto readRes = interface.Read(); if (!readRes) { @@ -110,20 +123,7 @@ void SocketHandler::SendMessages(std::string raddr, int prefix) { break; } uxlogger.Log("Send internetPacket message"); - /* - MessageHeader header(0); - auto rawHeader = header.Encode(); - int wsize; - { - if ((wsize = write(sock, rawHeader.data(), rawHeader.size())) < 0) { - int errnoCopy = errno; - std::string error = std::strerror(errnoCopy); - uxlogger.Log(std::format("Write message error: {}", error)); - break; - } - } - std::this_thread::sleep_for(std::chrono::seconds(3)); - */ + } done.release(); uxlogger.Log("Send messages done"); diff --git a/sockhand.hpp b/sockhand.hpp index df1ec09..728e31e 100644 --- a/sockhand.hpp +++ b/sockhand.hpp @@ -9,9 +9,6 @@ #include - - - class SocketHandler { private: int sock; @@ -21,7 +18,7 @@ private: public: void Handle(int newsock, std::string laddr, std::string raddr, int prefix); void RecvMessages(void); - void SendMessages(std::string raddr, int prefix); + void SendMessages(std::string raddr); }; #endif