working commit

This commit is contained in:
2026-05-17 13:35:52 +02:00
parent f0aa8a7ff2
commit 793f950e04
2 changed files with 41 additions and 44 deletions
+40 -40
View File
@@ -33,7 +33,7 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, in
uxlogger.Error(setAddrRes.error()); uxlogger.Error(setAddrRes.error());
return; return;
} }
auto setPrefixRes = interface.SetIP4Netmask(prefix); auto setPrefixRes = interface.SetIP4Netmask(30);
if (!setPrefixRes) { if (!setPrefixRes) {
uxlogger.Error(setPrefixRes.error()); uxlogger.Error(setPrefixRes.error());
return; return;
@@ -45,39 +45,52 @@ void SocketHandler::Handle(int newsock, std::string laddr, std::string raddr, in
} }
std::thread recvThr(&SocketHandler::RecvMessages, this); std::thread recvThr(&SocketHandler::RecvMessages, this);
recvThr.detach(); 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(); sendThr.detach();
done.acquire(); done.acquire();
uxlogger.Log("Handler done"); 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) { while (true) {
auto readRes = interface.Read(); auto readRes = interface.Read();
if (!readRes) { if (!readRes) {
@@ -110,20 +123,7 @@ void SocketHandler::SendMessages(std::string raddr, int prefix) {
break; break;
} }
uxlogger.Log("Send internetPacket message"); 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(); done.release();
uxlogger.Log("Send messages done"); uxlogger.Log("Send messages done");
+1 -4
View File
@@ -9,9 +9,6 @@
#include <interface.hpp> #include <interface.hpp>
class SocketHandler { class SocketHandler {
private: private:
int sock; int sock;
@@ -21,7 +18,7 @@ private:
public: public:
void Handle(int newsock, std::string laddr, std::string raddr, int prefix); void Handle(int newsock, std::string laddr, std::string raddr, int prefix);
void RecvMessages(void); void RecvMessages(void);
void SendMessages(std::string raddr, int prefix); void SendMessages(std::string raddr);
}; };
#endif #endif