cleaned up code that doesn't leak anymore
authorBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 4 Apr 2022 19:03:13 +0000 (14:03 -0500)
committerBrendan Hansen <brendan.f.hansen@gmail.com>
Mon, 4 Apr 2022 19:03:13 +0000 (14:03 -0500)
lib/onyx-net
src/client/net.onyx
src/server/server.onyx

index 79c85f4bf532700f45227504fcd982c31ceb4ac4..19f30f1562238a0bbbb23acc249311a17361e36d 160000 (submodule)
@@ -1 +1 @@
-Subproject commit 79c85f4bf532700f45227504fcd982c31ceb4ac4
+Subproject commit 19f30f1562238a0bbbb23acc249311a17361e36d
index d35eb590d3eff1d7f6d263a6941c5519ef4ec1dd..4040ff511a87070c1185fd3743839ed50c2c8b6f 100644 (file)
@@ -41,6 +41,14 @@ net_handle_packet :: (packet_data: [] u8) {
             push_game_state(Game_State, null);
         }
 
+        case .Connection_Rejected {
+            cr_packet := cast(^packets.Connection_Rejected) packet;
+            printf("Connection refused: {}\n", cr_packet.reason);
+
+            pop_game_state();
+            push_game_state(Connect_Menu, null);
+        }
+
         case .Chat_Message {
             chat_packet := cast(^packets.Chat_Message) packet;
             chat_messages << string.alloc_copy(.{
index 76a8e7f43ed572761d25671d060a0c4549275b20..90246826ecfe0f695d94057eec05454b5dbc24cf 100644 (file)
@@ -63,47 +63,51 @@ handle_packet :: (peer: ^onet.Peer, packet_data: [] u8) {
                 send_chat_message(0, msg);
             }
 
-            msg := new(packets.Verify_Connect);   @LEAK
+            msg := new(packets.Verify_Connect);
             msg.type = .Verify_Connect;
             msg.player_id = ~~next_player_id;
 
-            p := new(onet.Packet);                     @LEAK
+            p := new(onet.Packet);
             p.flags |= .Reliable;
             p.data = any_to_buffer(msg);
+            p.free_data = true;
             onet.peer_send(peer, 0, p);
 
             respond_with_error :: macro (reason: packets.Connection_Rejected.Reason) {
-                msg := new(packets.Connection_Rejected);   @LEAK
+                msg := new(packets.Connection_Rejected);
                 msg.type = .Connection_Rejected;
                 msg.reason = reason;
 
-                p := new(onet.Packet);                     @LEAK
+                p := new(onet.Packet);
                 p.flags |= .Reliable;
                 p.data = any_to_buffer(msg);
+                p.free_data = true;
                 onet.peer_send(peer, 0, p);
                 return;
             }
         }
 
         case .Chat_Message {
-            packet := new(onet.Packet); @LEAK
+            packet := new(onet.Packet);
             packet.flags |= .Reliable;
             packet.data = memory.copy_slice(packet_data);
+            packet.free_data = true;
             onet.host_broadcast(host, 0, packet);
         }
     }
 }
 
 send_chat_message :: (from: u16, msg: [] u8) {
-    chat_packet, packet_size := new_with_extra(packets.Chat_Message, msg.count); @LEAK
+    chat_packet, packet_size := new_with_extra(packets.Chat_Message, msg.count);
     chat_packet.type = .Chat_Message;
     chat_packet.sender_id = from;
     chat_packet.message_length = ~~ msg.count;
     memory.copy(~~ ^chat_packet.message_data, msg.data, msg.count);
 
-    packet := new(onet.Packet); @LEAK
+    packet := new(onet.Packet);
     packet.flags |= .Reliable;
     packet.data = .{ ~~chat_packet, packet_size };
+    packet.free_data = true;
     onet.host_broadcast(host, 0, packet);
 }