summaryrefslogtreecommitdiff
path: root/src/Client.zig
diff options
context:
space:
mode:
Diffstat (limited to 'src/Client.zig')
-rw-r--r--src/Client.zig14
1 files changed, 8 insertions, 6 deletions
diff --git a/src/Client.zig b/src/Client.zig
index 8e4ced4..b7139d6 100644
--- a/src/Client.zig
+++ b/src/Client.zig
@@ -19,12 +19,12 @@ pub fn deinit() void {
network.deinit();
}
-fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
+fn broadcastSaprusMessage(msg_bytes: []align(@alignOf(SaprusMessage)) u8, udp_port: u16) !void {
if (false) {
var foo: gcat.nic.RawSocket = try .init("enp7s0"); // /proc/net/dev
defer foo.deinit();
}
- const msg_bytes = msg.asBytes();
+ const msg: *SaprusMessage = try .bytesAsValue(msg_bytes);
try msg.networkFromNativeEndian();
defer msg.nativeFromNetworkEndian() catch unreachable;
@@ -46,6 +46,8 @@ fn broadcastSaprusMessage(msg: *SaprusMessage, udp_port: u16) !void {
try sock.bind(bind_addr);
+ std.debug.print("{x}\n", .{msg_bytes});
+
_ = try sock.sendTo(dest_addr, msg_bytes);
}
@@ -61,7 +63,7 @@ pub fn sendRelay(payload: []const u8, dest: [4]u8) !void {
relay.dest = dest;
_ = base64Enc.encode(relay.getPayload(), payload);
- try broadcastSaprusMessage(msg, 8888);
+ try broadcastSaprusMessage(msg_bytes, 8888);
}
fn randomPort() u16 {
@@ -80,14 +82,14 @@ pub fn sendInitialConnection(payload: []const u8, initial_port: u16) !*SaprusMes
.connection,
base64Enc.calcSize(payload.len),
)];
- const msg: *SaprusMessage = .init(.relay, msg_bytes);
+ const msg: *SaprusMessage = .init(.connection, msg_bytes);
const connection = (try msg.getSaprusTypePayload()).connection;
connection.src_port = initial_port;
connection.dest_port = dest_port;
_ = base64Enc.encode(connection.getPayload(), payload);
- try broadcastSaprusMessage(msg, 8888);
+ try broadcastSaprusMessage(msg_bytes, 8888);
return msg;
}
@@ -120,7 +122,7 @@ pub fn connect(payload: []const u8) !?SaprusConnection {
initial_conn_res = try .networkBytesAsValue(response_buf[0..len]);
// Complete handshake after awaiting response
- try broadcastSaprusMessage(msg, randomPort());
+ try broadcastSaprusMessage(msg.asBytes(), randomPort());
if (false) {
return initial_conn_res.?;