From b2849405b394b089d616de92cf48048784ef1bde Mon Sep 17 00:00:00 2001 From: MysterD Date: Mon, 23 Aug 2021 18:58:30 -0700 Subject: [PATCH] Changed all asserts in packet files to soft asserts --- src/pc/network/network.c | 5 +++-- src/pc/network/network.h | 8 ++++++++ src/pc/network/packets/packet_change_area.c | 2 +- src/pc/network/packets/packet_change_level.c | 2 +- src/pc/network/packets/packet_custom.c | 4 ++-- src/pc/network/packets/packet_join.c | 8 ++++---- src/pc/network/packets/packet_level_area_inform.c | 4 ++-- src/pc/network/packets/packet_network_players.c | 6 +++--- src/pc/network/packets/packet_object.c | 12 ++++++------ src/pc/network/packets/packet_ordered.c | 8 ++++---- src/pc/network/packets/packet_reliable.c | 4 ++-- src/pc/network/packets/packet_reservation_list.c | 4 ++-- src/pc/network/packets/packet_reservation_release.c | 4 ++-- src/pc/network/packets/packet_reservation_use.c | 4 ++-- src/pc/network/packets/packet_save_file.c | 3 ++- src/pc/network/packets/packet_spawn_objects.c | 6 +++--- src/pc/network/reservation_area.c | 2 +- 17 files changed, 48 insertions(+), 38 deletions(-) diff --git a/src/pc/network/network.c b/src/pc/network/network.c index be4d29d52..dc5a81343 100644 --- a/src/pc/network/network.c +++ b/src/pc/network/network.c @@ -125,7 +125,7 @@ void network_send_to(u8 localIndex, struct Packet* p) { if (localIndex == 0) { if (p->buffer[0] != PACKET_JOIN_REQUEST && p->buffer[0] != PACKET_KICK && p->buffer[0] != PACKET_ACK) { LOG_ERROR("\n####################\nsending to myself, packetType: %d\n####################\n", p->packetType); - assert(false); + SOFT_ASSERT(false); return; } } @@ -172,7 +172,7 @@ void network_send_to(u8 localIndex, struct Packet* p) { localIndex = gNetworkPlayerServer->localIndex; } - assert(p->dataLength < PACKET_LENGTH); + SOFT_ASSERT(p->dataLength < PACKET_LENGTH); // rate limit packets bool tooManyPackets = false; @@ -304,6 +304,7 @@ void network_update(void) { network_on_loaded_area(); } } + SOFT_ASSERT(false); // update network area timer network_update_area_timer(); diff --git a/src/pc/network/network.h b/src/pc/network/network.h index 7999db386..ceb4ec8c0 100644 --- a/src/pc/network/network.h +++ b/src/pc/network/network.h @@ -26,6 +26,14 @@ extern struct MarioState gMarioStates[]; ? "Client" \ : (gNetworkType == NT_SERVER ? "Server" : " None ")) \ +#ifdef DEVELOPMENT +#define SOFT_ASSERT(_condition) { if (!(_condition)) { LOG_ERROR("failed assert at line %d", __LINE__); assert(_condition); } } +#define SOFT_ASSERT_RETURN(_condition, _retval) { if (!(_condition)) { LOG_ERROR("failed assert at line %d", __LINE__); assert(_condition); } } +#else +#define SOFT_ASSERT(_condition) { if (!(_condition)) { LOG_ERROR("failed soft assert at line %d", __LINE__); return; } } +#define SOFT_ASSERT_RETURN(_condition, _retval) { if (!(_condition)) { LOG_ERROR("failed soft assert at line %d", __LINE__); return _retval; } } +#endif + enum NetworkSystemType { NS_SOCKET, NS_DISCORD, diff --git a/src/pc/network/packets/packet_change_area.c b/src/pc/network/packets/packet_change_area.c index 3b062b460..93cb5ff79 100644 --- a/src/pc/network/packets/packet_change_area.c +++ b/src/pc/network/packets/packet_change_area.c @@ -68,7 +68,7 @@ void network_send_change_area(void) { void network_receive_change_area(struct Packet* p) { LOG_INFO("rx change area"); - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); struct NetworkPlayer* np = &gNetworkPlayers[p->localIndex]; if (np == NULL || np->localIndex == UNKNOWN_LOCAL_INDEX || !np->connected) { LOG_ERROR("Receiving change area from inactive player!"); diff --git a/src/pc/network/packets/packet_change_level.c b/src/pc/network/packets/packet_change_level.c index b267f199c..1673a67aa 100644 --- a/src/pc/network/packets/packet_change_level.c +++ b/src/pc/network/packets/packet_change_level.c @@ -75,7 +75,7 @@ void network_send_change_level(void) { void network_receive_change_level(struct Packet* p) { LOG_INFO("rx change level"); - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); struct NetworkPlayer* np = &gNetworkPlayers[p->localIndex]; if (np == NULL || np->localIndex == UNKNOWN_LOCAL_INDEX || !np->connected) { LOG_ERROR("Receiving change level from inactive player!"); diff --git a/src/pc/network/packets/packet_custom.c b/src/pc/network/packets/packet_custom.c index 2b1ba8937..aa7191d13 100644 --- a/src/pc/network/packets/packet_custom.c +++ b/src/pc/network/packets/packet_custom.c @@ -1,6 +1,6 @@ #include #include "../network.h" - +#include "pc/debuglog.h" #define MAX_CUSTOM_PACKETS 128 struct NetworkCustomPacket { @@ -12,7 +12,7 @@ static u8 onCustomPacketId = 0; static struct NetworkCustomPacket customPackets[MAX_CUSTOM_PACKETS]; u8 network_register_custom_packet(void (*send_callback)(struct Packet* p, void* params), void (*receive_callback)(struct Packet* p)) { - assert(onCustomPacketId < MAX_CUSTOM_PACKETS); + SOFT_ASSERT_RETURN(onCustomPacketId < MAX_CUSTOM_PACKETS, 0); u8 i = onCustomPacketId; customPackets[i].send_callback = send_callback; diff --git a/src/pc/network/packets/packet_join.c b/src/pc/network/packets/packet_join.c index b3f6c7a41..17723c0d8 100644 --- a/src/pc/network/packets/packet_join.c +++ b/src/pc/network/packets/packet_join.c @@ -26,7 +26,7 @@ static u8 sJoinRequestPlayerPalette; static char sJoinRequestPlayerName[MAX_PLAYER_STRING]; void network_send_join_request(void) { - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); gOverrideEeprom = eeprom; @@ -42,7 +42,7 @@ void network_send_join_request(void) { } void network_receive_join_request(struct Packet* p) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); LOG_INFO("received join request"); if (p->dataLength > 5) { @@ -59,7 +59,7 @@ void network_receive_join_request(struct Packet* p) { } void network_send_join(struct Packet* joinRequestPacket) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); // make palette unique sJoinRequestPlayerPalette = network_player_unique_palette(sJoinRequestPlayerPalette); @@ -114,7 +114,7 @@ void network_send_join(struct Packet* joinRequestPacket) { } void network_receive_join(struct Packet* p) { - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); if (gNetworkPlayerLocal != NULL) { return; } LOG_INFO("received join packet"); diff --git a/src/pc/network/packets/packet_level_area_inform.c b/src/pc/network/packets/packet_level_area_inform.c index a702e1d06..a67c0ae52 100644 --- a/src/pc/network/packets/packet_level_area_inform.c +++ b/src/pc/network/packets/packet_level_area_inform.c @@ -7,7 +7,7 @@ static u16 sLevelAreaInformSeq[MAX_PLAYERS][MAX_PLAYERS] = { 0 }; void network_send_level_area_inform(struct NetworkPlayer* np) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); for (int i = 1; i < MAX_PLAYERS; i++) { struct NetworkPlayer* np2 = &gNetworkPlayers[i]; @@ -34,7 +34,7 @@ void network_send_level_area_inform(struct NetworkPlayer* np) { void network_receive_level_area_inform(struct Packet* p) { - assert(gNetworkType != NT_SERVER); + SOFT_ASSERT(gNetworkType != NT_SERVER); u16 seq; u8 globalIndex; diff --git a/src/pc/network/packets/packet_network_players.c b/src/pc/network/packets/packet_network_players.c index f71578b0e..f6d0d7616 100644 --- a/src/pc/network/packets/packet_network_players.c +++ b/src/pc/network/packets/packet_network_players.c @@ -7,8 +7,8 @@ #include "pc/configfile.h" static void network_send_to_network_players(u8 sendToLocalIndex) { - assert(gNetworkType == NT_SERVER); - assert(sendToLocalIndex != 0); + SOFT_ASSERT(gNetworkType == NT_SERVER); + SOFT_ASSERT(sendToLocalIndex != 0); u8 connectedCount = network_player_connected_count(); @@ -42,7 +42,7 @@ static void network_send_to_network_players(u8 sendToLocalIndex) { } void network_send_network_players(void) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); LOG_INFO("sending list of network players to all"); for (int i = 1; i < MAX_PLAYERS; i++) { if (!gNetworkPlayers[i].connected) { continue; } diff --git a/src/pc/network/packets/packet_object.c b/src/pc/network/packets/packet_object.c index d9c586af8..cc26c85c4 100644 --- a/src/pc/network/packets/packet_object.c +++ b/src/pc/network/packets/packet_object.c @@ -145,7 +145,7 @@ struct SyncObject* network_init_object(struct Object *o, float maxSyncDistance) } void network_init_object_field(struct Object *o, void* field) { - assert(o->oSyncID != 0); + SOFT_ASSERT(o->oSyncID != 0); // remember to synchronize this extra field struct SyncObject* so = &gSyncObjects[o->oSyncID]; u8 index = so->extraFieldCount++; @@ -227,8 +227,8 @@ void network_set_sync_id(struct Object* o) { syncId = reservation_area_local_grab_id(); } - assert(syncId != 0); - assert(gSyncObjects[syncId].o == NULL); + SOFT_ASSERT(syncId != 0); + SOFT_ASSERT(gSyncObjects[syncId].o == NULL); o->oSyncID = syncId; @@ -236,7 +236,7 @@ void network_set_sync_id(struct Object* o) { LOG_INFO("set sync id for object w/behavior %d", get_id_from_behavior(o->behavior)); } - assert(o->oSyncID < MAX_SYNC_OBJECTS); + SOFT_ASSERT(o->oSyncID < MAX_SYNC_OBJECTS); } // ----- header ----- // @@ -401,7 +401,7 @@ static void packet_write_object_extra_fields(struct Packet* p, struct Object* o) // write the extra field for (u8 i = 0; i < so->extraFieldCount; i++) { - assert(so->extraFields[i] != NULL); + SOFT_ASSERT(so->extraFields[i] != NULL); packet_write(p, so->extraFields[i], sizeof(u32)); } } @@ -419,7 +419,7 @@ static void packet_read_object_extra_fields(struct Packet* p, struct Object* o) // read the extra fields for (u8 i = 0; i < extraFieldsCount; i++) { - assert(so->extraFields[i] != NULL); + SOFT_ASSERT(so->extraFields[i] != NULL); packet_read(p, so->extraFields[i], sizeof(u32)); } } diff --git a/src/pc/network/packets/packet_ordered.c b/src/pc/network/packets/packet_ordered.c index 98e8fcdec..721d507c4 100644 --- a/src/pc/network/packets/packet_ordered.c +++ b/src/pc/network/packets/packet_ordered.c @@ -24,7 +24,7 @@ static struct OrderedPacketTable* orderedPacketTable[MAX_PLAYERS] = { 0 }; static void packet_ordered_check_for_processing(struct OrderedPacketTable* opt) { // sanity check - assert(opt != NULL); + SOFT_ASSERT(opt != NULL); struct OrderedPacketList* opl = opt->packets; struct OrderedPacketList* oplLast = opl; @@ -66,9 +66,9 @@ static void packet_ordered_check_for_processing(struct OrderedPacketTable* opt) static void packet_ordered_add_to_table(struct OrderedPacketTable* opt, struct Packet* p) { // sanity check - assert(opt != NULL); - assert(opt->fromGlobalId == p->orderedFromGlobalId); - assert(opt->groupId == p->orderedGroupId); + SOFT_ASSERT(opt != NULL); + SOFT_ASSERT(opt->fromGlobalId == p->orderedFromGlobalId); + SOFT_ASSERT(opt->groupId == p->orderedGroupId); if (p->orderedSeqId < opt->processSeqId) { // this packet has already been processed! diff --git a/src/pc/network/packets/packet_reliable.c b/src/pc/network/packets/packet_reliable.c index cff91d5a7..0c2db57ea 100644 --- a/src/pc/network/packets/packet_reliable.c +++ b/src/pc/network/packets/packet_reliable.c @@ -95,14 +95,14 @@ void network_remember_reliable(struct Packet* p) { if (tail == NULL) { // start of the list - assert(head == NULL); + SOFT_ASSERT(head == NULL); head = node; tail = node; return; } // add to end of list - assert(tail->next == NULL); + SOFT_ASSERT(tail->next == NULL); tail->next = node; node->prev = tail; tail = node; diff --git a/src/pc/network/packets/packet_reservation_list.c b/src/pc/network/packets/packet_reservation_list.c index 92ed84a5f..178965d3f 100644 --- a/src/pc/network/packets/packet_reservation_list.c +++ b/src/pc/network/packets/packet_reservation_list.c @@ -11,7 +11,7 @@ #include "pc/debuglog.h" void network_send_reservation_list(struct NetworkPlayer* np, u8 syncIds[]) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); struct Packet p; packet_init(&p, PACKET_RESERVATION_LIST, true, PLMT_NONE); @@ -30,7 +30,7 @@ void network_send_reservation_list(struct NetworkPlayer* np, u8 syncIds[]) { } void network_receive_reservation_list(struct Packet* p) { - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); LOG_INFO("rx reservation list"); u8 courseNum, actNum, levelNum, areaIndex; diff --git a/src/pc/network/packets/packet_reservation_release.c b/src/pc/network/packets/packet_reservation_release.c index 8b66ece5b..67f5b8fb9 100644 --- a/src/pc/network/packets/packet_reservation_release.c +++ b/src/pc/network/packets/packet_reservation_release.c @@ -11,7 +11,7 @@ #include "pc/debuglog.h" void network_send_reservation_release(u8 syncId) { - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); // make sure this is a reserved id if (syncId < RESERVED_IDS_SYNC_OBJECT_OFFSET) { return; } @@ -32,7 +32,7 @@ void network_send_reservation_release(u8 syncId) { } void network_receive_reservation_release(struct Packet* p) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); LOG_INFO("rx reservation release"); struct NetworkPlayer* np = &gNetworkPlayers[p->localIndex]; diff --git a/src/pc/network/packets/packet_reservation_use.c b/src/pc/network/packets/packet_reservation_use.c index 5e3137fdc..709ac29b9 100644 --- a/src/pc/network/packets/packet_reservation_use.c +++ b/src/pc/network/packets/packet_reservation_use.c @@ -11,7 +11,7 @@ #include "pc/debuglog.h" void network_send_reservation_use(u8 syncId) { - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); // make sure this is a reserved id if (syncId < RESERVED_IDS_SYNC_OBJECT_OFFSET) { return; } @@ -32,7 +32,7 @@ void network_send_reservation_use(u8 syncId) { } void network_receive_reservation_use(struct Packet* p) { - assert(gNetworkType == NT_SERVER); + SOFT_ASSERT(gNetworkType == NT_SERVER); LOG_INFO("rx reservation use"); struct NetworkPlayer* np = &gNetworkPlayers[p->localIndex]; diff --git a/src/pc/network/packets/packet_save_file.c b/src/pc/network/packets/packet_save_file.c index f9a510a27..a8a120534 100644 --- a/src/pc/network/packets/packet_save_file.c +++ b/src/pc/network/packets/packet_save_file.c @@ -1,10 +1,11 @@ #include #include "../network.h" #include "game/save_file.h" +#include "pc/debuglog.h" void network_send_save_file(s32 fileIndex) { if (gNetworkPlayerServer == NULL) { return; } - assert(gNetworkType == NT_CLIENT); + SOFT_ASSERT(gNetworkType == NT_CLIENT); struct Packet p; packet_init(&p, PACKET_SAVE_FILE, true, PLMT_NONE); packet_write(&p, &fileIndex, sizeof(s32)); diff --git a/src/pc/network/packets/packet_spawn_objects.c b/src/pc/network/packets/packet_spawn_objects.c index 1d154f37c..674eb8080 100644 --- a/src/pc/network/packets/packet_spawn_objects.c +++ b/src/pc/network/packets/packet_spawn_objects.c @@ -32,7 +32,7 @@ static u8 generate_parent_id(struct Object* objects[], u8 onIndex, bool sanitize if (sanitize && o->parentObj->oSyncID == 0) { return (u8)-1; } - assert(o->parentObj->oSyncID != 0); + SOFT_ASSERT_RETURN(o->parentObj->oSyncID != 0, (u8)-1); return (u8)o->parentObj->oSyncID; } @@ -40,7 +40,7 @@ static u8 generate_parent_id(struct Object* objects[], u8 onIndex, bool sanitize if (o->parentObj == objects[i]) { return i; } } - assert(false); + SOFT_ASSERT_RETURN(false, (u8)-1); } void network_send_spawn_objects(struct Object* objects[], u32 models[], u8 objectCount) { @@ -49,7 +49,7 @@ void network_send_spawn_objects(struct Object* objects[], u32 models[], u8 objec void network_send_spawn_objects_to(u8 sendToLocalIndex, struct Object* objects[], u32 models[], u8 objectCount) { if (gNetworkPlayerLocal == NULL || !gNetworkPlayerLocal->currAreaSyncValid) { return; } - assert(objectCount < MAX_SPAWN_OBJECTS_PER_PACKET); + SOFT_ASSERT(objectCount < MAX_SPAWN_OBJECTS_PER_PACKET); // prevent sending spawn objects during credits if (gCurrActStarNum == 99) { return; } diff --git a/src/pc/network/reservation_area.c b/src/pc/network/reservation_area.c index 3b5a6a737..0dcebfc07 100644 --- a/src/pc/network/reservation_area.c +++ b/src/pc/network/reservation_area.c @@ -145,7 +145,7 @@ static void reservation_area_unload(struct ReservationArea* unloadRa) { lastRa = ra; ra = ra->next; } - assert(false); + SOFT_ASSERT(false); } static void reservation_area_player_left(struct NetworkPlayer* np) {