From b68e3f430cfd64c9f13f284f6c4dfe8d5e8a0fea Mon Sep 17 00:00:00 2001 From: zicodxx Date: Thu, 3 Jan 2013 16:08:39 +0100 Subject: [PATCH] Centralized UDP Broadcast function for IPv4 and IPv6 calls - patch by Kp --- CHANGELOG.txt | 4 ++++ main/net_udp.c | 40 ++++++++++++++++------------------------ 2 files changed, 20 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.txt b/CHANGELOG.txt index c7052f0e3..975093538 100644 --- a/CHANGELOG.txt +++ b/CHANGELOG.txt @@ -1,5 +1,9 @@ D2X-Rebirth Changelog +20130103 +-------- +main/net_udp.c: Centralized UDP Broadcast function for IPv4 and IPv6 calls - patch by Kp + 20121102 -------- arch/include/key.h, arch/sdl/key.c, main/kconfig.c: Made key_properties readable in other files; Eliminated key_text variable; Marked unicode_frame_buffer as extern in header - patches by Kp diff --git a/main/net_udp.c b/main/net_udp.c index 9b7e0499b..cbe5cf3f9 100644 --- a/main/net_udp.c +++ b/main/net_udp.c @@ -101,6 +101,8 @@ extern void multi_send_wall_status_specific (int pnum,int wallnum,ubyte type,uby extern void multi_send_light_specific (int pnum,int segnum,ubyte val); extern void multi_send_trigger_specific (char pnum,char trig); +static void net_udp_broadcast_game_info(ubyte info_upid); + // Variables int UDP_num_sendto = 0, UDP_len_sendto = 0, UDP_num_recvfrom = 0, UDP_len_recvfrom = 0; UDP_mdata_info UDP_MData; @@ -2290,6 +2292,14 @@ void net_udp_send_game_info(struct _sockaddr sender_addr, ubyte info_upid) } } +static void net_udp_broadcast_game_info(ubyte info_upid) +{ + net_udp_send_game_info(GBcast, info_upid); +#ifdef IPv6 + net_udp_send_game_info(GMcast_v6, info_upid); +#endif +} + /* Send game info to all players in this game. Also send lite_info for people watching the netlist */ void net_udp_send_netgame_update() { @@ -2301,10 +2311,7 @@ void net_udp_send_netgame_update() continue; net_udp_send_game_info(Netgame.players[i].protocol.udp.addr, UPID_GAME_INFO); } - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); } int net_udp_send_request(void) @@ -3475,10 +3482,7 @@ int net_udp_send_sync(void) net_udp_dump_player(Netgame.players[i].protocol.udp.addr, DUMP_ABORTED); net_udp_send_game_info(Netgame.players[i].protocol.udp.addr, UPID_GAME_INFO); } - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); return -1; } @@ -3656,10 +3660,7 @@ abort: net_udp_dump_player(Netgame.players[i].protocol.udp.addr, DUMP_ABORTED); net_udp_send_game_info(Netgame.players[i].protocol.udp.addr, UPID_GAME_INFO); } - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); Netgame.numplayers = save_nplayers; Network_status = NETSTAT_MENU; @@ -3777,10 +3778,7 @@ int net_udp_start_game(void) Game_mode = GM_GAME_OVER; return 0; // see if we want to tweak the game we setup } - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); // game started. broadcast our current status to everyone who wants to know -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); // game started. broadcast our current status to everyone who wants to know -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); // game started. broadcast our current status to everyone who wants to know return 1; // don't keep params menu or mission listbox (may want to join a game next time) } @@ -4021,10 +4019,7 @@ void net_udp_leave_game() continue; net_udp_send_game_info(Netgame.players[i].protocol.udp.addr, UPID_GAME_INFO); } - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); N_players=nsave; #ifdef USE_TRACKER if( Netgame.Tracker ) @@ -4185,10 +4180,7 @@ void net_udp_do_frame(int force, int listen) if (multi_i_am_master() && time>=last_bcast_time+(F1_0*10)) { last_bcast_time = time; - net_udp_send_game_info(GBcast, UPID_GAME_INFO_LITE); -#ifdef IPv6 - net_udp_send_game_info(GMcast_v6, UPID_GAME_INFO_LITE); -#endif + net_udp_broadcast_game_info(UPID_GAME_INFO_LITE); } #ifdef USE_TRACKER