Implemented Winsock functions for UDP which I totally forgot about; Now when leaving game in any way, close sockets and Winsock stuff
This commit is contained in:
parent
4d5ff1bd29
commit
faab4b0acb
|
@ -4,6 +4,7 @@ D2X-Rebirth Changelog
|
||||||
--------
|
--------
|
||||||
SConstruct: Fixing Windows build which was not linking against SDL
|
SConstruct: Fixing Windows build which was not linking against SDL
|
||||||
main/net_udp.c: Fixed Compiler-warning on Windows
|
main/net_udp.c: Fixed Compiler-warning on Windows
|
||||||
|
main/net_ipx.c, main/net_udp.c: Implemented Winsock functions for UDP which I totally forgot about; Now when leaving game in any way, close sockets and Winsock stuff
|
||||||
|
|
||||||
20100701
|
20100701
|
||||||
--------
|
--------
|
||||||
|
|
|
@ -230,7 +230,6 @@ void ipxdrv_close()
|
||||||
// -5 if error with getting internetwork address
|
// -5 if error with getting internetwork address
|
||||||
int ipxdrv_init( int socket_number )
|
int ipxdrv_init( int socket_number )
|
||||||
{
|
{
|
||||||
static int cleanup = 0;
|
|
||||||
#ifdef _WIN32
|
#ifdef _WIN32
|
||||||
WORD wVersionRequested;
|
WORD wVersionRequested;
|
||||||
WSADATA wsaData;
|
WSADATA wsaData;
|
||||||
|
@ -267,10 +266,6 @@ int ipxdrv_init( int socket_number )
|
||||||
|
|
||||||
ipxdrv_installed = 1;
|
ipxdrv_installed = 1;
|
||||||
|
|
||||||
if (!cleanup)
|
|
||||||
atexit(ipxdrv_close);
|
|
||||||
cleanup = 1;
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3224,6 +3219,9 @@ int net_ipx_setup_game()
|
||||||
|
|
||||||
i = newmenu_do1( NULL, NULL, optnum, m, (int (*)( newmenu *, d_event *, void * ))net_ipx_game_param_handler, &opt, 1 );
|
i = newmenu_do1( NULL, NULL, optnum, m, (int (*)( newmenu *, d_event *, void * ))net_ipx_game_param_handler, &opt, 1 );
|
||||||
|
|
||||||
|
if (i < 0)
|
||||||
|
ipxdrv_close();
|
||||||
|
|
||||||
return i >= 0;
|
return i >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3907,7 +3905,7 @@ int net_ipx_join_poll( newmenu *menu, d_event *event, void *menu_text )
|
||||||
case EVENT_WINDOW_CLOSE:
|
case EVENT_WINDOW_CLOSE:
|
||||||
d_free(menu_text);
|
d_free(menu_text);
|
||||||
d_free(menus);
|
d_free(menus);
|
||||||
|
ipxdrv_close();
|
||||||
if (!Game_wind)
|
if (!Game_wind)
|
||||||
Network_status = NETSTAT_MENU; // they cancelled
|
Network_status = NETSTAT_MENU; // they cancelled
|
||||||
break;
|
break;
|
||||||
|
@ -4067,6 +4065,7 @@ net_ipx_level_sync(void)
|
||||||
{
|
{
|
||||||
Players[Player_num].connected = CONNECT_DISCONNECTED;
|
Players[Player_num].connected = CONNECT_DISCONNECTED;
|
||||||
net_ipx_send_endlevel_packet();
|
net_ipx_send_endlevel_packet();
|
||||||
|
ipxdrv_close();
|
||||||
if (Game_wind)
|
if (Game_wind)
|
||||||
window_close(Game_wind);
|
window_close(Game_wind);
|
||||||
show_menus();
|
show_menus();
|
||||||
|
@ -4392,6 +4391,7 @@ void net_ipx_leave_game()
|
||||||
write_player_file();
|
write_player_file();
|
||||||
|
|
||||||
net_ipx_flush();
|
net_ipx_flush();
|
||||||
|
ipxdrv_close();
|
||||||
}
|
}
|
||||||
|
|
||||||
void net_ipx_flush()
|
void net_ipx_flush()
|
||||||
|
|
|
@ -58,6 +58,7 @@
|
||||||
|
|
||||||
// Prototypes
|
// Prototypes
|
||||||
void net_udp_init();
|
void net_udp_init();
|
||||||
|
void net_udp_close();
|
||||||
void net_udp_request_game_info(struct _sockaddr game_addr, int lite);
|
void net_udp_request_game_info(struct _sockaddr game_addr, int lite);
|
||||||
void net_udp_listen();
|
void net_udp_listen();
|
||||||
int net_udp_show_game_info();
|
int net_udp_show_game_info();
|
||||||
|
@ -476,6 +477,7 @@ static int manual_join_game_handler(newmenu *menu, d_event *event, direct_join *
|
||||||
|
|
||||||
case EVENT_WINDOW_CLOSE:
|
case EVENT_WINDOW_CLOSE:
|
||||||
d_free(dj);
|
d_free(dj);
|
||||||
|
net_udp_close();
|
||||||
break;
|
break;
|
||||||
|
|
||||||
default:
|
default:
|
||||||
|
@ -589,7 +591,7 @@ int net_udp_list_join_poll( newmenu *menu, d_event *event, void *menu_text )
|
||||||
case EVENT_WINDOW_CLOSE:
|
case EVENT_WINDOW_CLOSE:
|
||||||
d_free(menu_text);
|
d_free(menu_text);
|
||||||
d_free(menus);
|
d_free(menus);
|
||||||
|
net_udp_close();
|
||||||
if (!Game_wind)
|
if (!Game_wind)
|
||||||
Network_status = NETSTAT_MENU; // they cancelled
|
Network_status = NETSTAT_MENU; // they cancelled
|
||||||
break;
|
break;
|
||||||
|
@ -786,6 +788,17 @@ void net_udp_init()
|
||||||
int t;
|
int t;
|
||||||
int save_pnum = Player_num;
|
int save_pnum = Player_num;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
{
|
||||||
|
WORD wVersionRequested;
|
||||||
|
WSADATA wsaData;
|
||||||
|
wVersionRequested = MAKEWORD(2, 0);
|
||||||
|
WSACleanUp();
|
||||||
|
if (WSAStartup( wVersionRequested, &wsaData))
|
||||||
|
nm_messagebox( TXT_ERROR, 1, TXT_OK, "Cannot init Winsock!"); // no break here... game will fail at socket creation anyways...
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
if( UDP_Socket[0] != -1 )
|
if( UDP_Socket[0] != -1 )
|
||||||
udp_close_socket(0);
|
udp_close_socket(0);
|
||||||
if( UDP_Socket[1] != -1 )
|
if( UDP_Socket[1] != -1 )
|
||||||
|
@ -823,6 +836,18 @@ void net_udp_init()
|
||||||
Netgame.PacketsPerSec=10;
|
Netgame.PacketsPerSec=10;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void net_udp_close()
|
||||||
|
{
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSACleanUp();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if( UDP_Socket[0] != -1 )
|
||||||
|
udp_close_socket(0);
|
||||||
|
if( UDP_Socket[1] != -1 )
|
||||||
|
udp_close_socket(1);
|
||||||
|
}
|
||||||
|
|
||||||
int net_udp_how_many_connected()
|
int net_udp_how_many_connected()
|
||||||
{
|
{
|
||||||
int num=0,i;
|
int num=0,i;
|
||||||
|
@ -999,6 +1024,7 @@ net_udp_disconnect_player(int playernum)
|
||||||
multi_quit_game = 1;
|
multi_quit_game = 1;
|
||||||
game_leave_menus();
|
game_leave_menus();
|
||||||
multi_reset_stuff();
|
multi_reset_stuff();
|
||||||
|
net_udp_close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3205,6 +3231,9 @@ int net_udp_setup_game()
|
||||||
|
|
||||||
i = newmenu_do1( NULL, NULL, optnum, m, (int (*)( newmenu *, d_event *, void * ))net_udp_game_param_handler, &opt, 1 );
|
i = newmenu_do1( NULL, NULL, optnum, m, (int (*)( newmenu *, d_event *, void * ))net_udp_game_param_handler, &opt, 1 );
|
||||||
|
|
||||||
|
if (i < 0)
|
||||||
|
net_udp_close();
|
||||||
|
|
||||||
return i >= 0;
|
return i >= 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3790,6 +3819,7 @@ net_udp_level_sync(void)
|
||||||
{
|
{
|
||||||
Players[Player_num].connected = CONNECT_DISCONNECTED;
|
Players[Player_num].connected = CONNECT_DISCONNECTED;
|
||||||
net_udp_send_endlevel_packet();
|
net_udp_send_endlevel_packet();
|
||||||
|
net_udp_close();
|
||||||
if (Game_wind)
|
if (Game_wind)
|
||||||
window_close(Game_wind);
|
window_close(Game_wind);
|
||||||
show_menus();
|
show_menus();
|
||||||
|
@ -3905,11 +3935,7 @@ void net_udp_leave_game()
|
||||||
write_player_file();
|
write_player_file();
|
||||||
|
|
||||||
net_udp_flush();
|
net_udp_flush();
|
||||||
|
net_udp_close();
|
||||||
if( UDP_Socket[0] != -1 )
|
|
||||||
udp_close_socket(0);
|
|
||||||
if( UDP_Socket[1] != -1 )
|
|
||||||
udp_close_socket(1);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void net_udp_flush()
|
void net_udp_flush()
|
||||||
|
|
Loading…
Reference in a new issue