From 159a93317e773e82e3fb5281bccdc3cfcd6fccfa Mon Sep 17 00:00:00 2001 From: AfonsoCMSousa Date: Wed, 7 Jan 2026 20:30:33 +0000 Subject: [PATCH] fix: fixed more net.cpp problems --- PlayerTracker | Bin 812184 -> 812256 bytes source/net.cpp | 21 ++++++++++----------- 2 files changed, 10 insertions(+), 11 deletions(-) diff --git a/PlayerTracker b/PlayerTracker index d486fa2d90a5c56c75cd2949d834a168e79205c5..560299a4881945b12805c714a36420dd1d49ab83 100755 GIT binary patch delta 30374 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 diff --git a/source/net.cpp b/source/net.cpp index 83a38f9..4af42cb 100644 --- a/source/net.cpp +++ b/source/net.cpp @@ -23,7 +23,7 @@ void Socket::connect_server(const char *ip, uint16_t port) { // Connect to existing UNIX domain socket (e.g., /tmp/socket_path) void Socket::connect_unix(const char *ip, uint16_t port) { - sock = socket(AF_UNIX, SOCK_DGRAM, 0); + sock = socket(AF_UNIX, SOCK_STREAM, 0); if (sock < 0) { throw std::runtime_error("Failed to create UNIX socket"); } @@ -32,7 +32,7 @@ void Socket::connect_unix(const char *ip, uint16_t port) { this->server_addr_unix.sun_family = AF_UNIX; strncpy(this->server_addr_unix.sun_path, ip, sizeof(this->server_addr_unix.sun_path) - 1); - if (connect(sock, (struct sockaddr *)&server_addr, sizeof(server_addr)) < 0) { + if (connect(sock, (struct sockaddr *)&server_addr_unix, sizeof(server_addr_unix)) < 0) { throw std::runtime_error("Failed to connect to UNIX socket"); } } @@ -45,10 +45,10 @@ void Socket::send_server() { } void Socket::send_unix() { - ssize_t sent_bytes = sendto(sock, &packet_data, sizeof(packet_data), 0, (struct sockaddr *)&server_addr_unix, sizeof(server_addr_unix)); - if (sent_bytes < 0) { - throw runtime_error("Failed to send data to UNIX socket"); - } + ssize_t sent_bytes = send(sock, &packet_data, sizeof(packet_data), 0); + if (sent_bytes < 0) { + throw runtime_error("Failed to send data to UNIX socket"); + } } void Socket::send_server(const api_packet &data) { @@ -59,10 +59,10 @@ void Socket::send_server(const api_packet &data) { } void Socket::send_unix(const api_packet &data) { - ssize_t sent_bytes = sendto(sock, &data, sizeof(data), 0, (struct sockaddr *)&server_addr_unix, sizeof(server_addr_unix)); - if (sent_bytes < 0) { - throw runtime_error("Failed to send data to UNIX socket"); - } + ssize_t sent_bytes = send(sock, &data, sizeof(data), 0); + if (sent_bytes < 0) { + throw runtime_error("Failed to send data to UNIX socket"); + } } void Socket::set_packet(const api_packet &data) { @@ -81,4 +81,3 @@ api_packet Socket::create_packet(uint8_t tracker_id) { api_packet Socket::get_packet() { return packet_data; } -