mirror of
https://github.com/FWGS/xash3d-fwgs
synced 2024-11-22 18:07:09 +01:00
engine: network: do not crash if one of v4 or v6 socket opening failed but crash if both. Fix hostport/clientport cvars usage
This commit is contained in:
parent
eb7eb4acbc
commit
e621c98602
@ -1870,13 +1870,10 @@ static void NET_OpenIP( qboolean change_port, int *sockets, const char *net_ifac
|
|||||||
|
|
||||||
if( !NET_IsSocketValid( sockets[NS_SERVER] ))
|
if( !NET_IsSocketValid( sockets[NS_SERVER] ))
|
||||||
{
|
{
|
||||||
port = net_iphostport->value;
|
port = hostport;
|
||||||
if( !port )
|
if( !port )
|
||||||
{
|
{
|
||||||
if( sv_nat )
|
port = sv_nat ? PORT_ANY : net_hostport->value;
|
||||||
port = PORT_ANY;
|
|
||||||
else
|
|
||||||
port = net_hostport->value;
|
|
||||||
|
|
||||||
if( !port )
|
if( !port )
|
||||||
port = PORT_SERVER; // forcing to default
|
port = PORT_SERVER; // forcing to default
|
||||||
@ -1884,7 +1881,7 @@ static void NET_OpenIP( qboolean change_port, int *sockets, const char *net_ifac
|
|||||||
sockets[NS_SERVER] = NET_IPSocket( net_iface, port, family );
|
sockets[NS_SERVER] = NET_IPSocket( net_iface, port, family );
|
||||||
|
|
||||||
if( !NET_IsSocketValid( sockets[NS_SERVER] ) && Host_IsDedicated( ))
|
if( !NET_IsSocketValid( sockets[NS_SERVER] ) && Host_IsDedicated( ))
|
||||||
Host_Error( "Couldn't allocate dedicated server IP port %d.\n", port );
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// dedicated servers don't need client ports
|
// dedicated servers don't need client ports
|
||||||
@ -1902,13 +1899,10 @@ static void NET_OpenIP( qboolean change_port, int *sockets, const char *net_ifac
|
|||||||
|
|
||||||
if( !NET_IsSocketValid( sockets[NS_CLIENT] ))
|
if( !NET_IsSocketValid( sockets[NS_CLIENT] ))
|
||||||
{
|
{
|
||||||
port = net_ipclientport->value;
|
port = clientport;
|
||||||
if( !port )
|
if( !port )
|
||||||
{
|
{
|
||||||
if( cl_nat )
|
port = cl_nat ? PORT_ANY : net_clientport->value;
|
||||||
port = PORT_ANY;
|
|
||||||
else
|
|
||||||
port = net_clientport->value;
|
|
||||||
|
|
||||||
if( !port )
|
if( !port )
|
||||||
port = PORT_ANY; // forcing to default
|
port = PORT_ANY; // forcing to default
|
||||||
@ -1918,6 +1912,8 @@ static void NET_OpenIP( qboolean change_port, int *sockets, const char *net_ifac
|
|||||||
if( !NET_IsSocketValid( sockets[NS_CLIENT] ))
|
if( !NET_IsSocketValid( sockets[NS_CLIENT] ))
|
||||||
sockets[NS_CLIENT] = NET_IPSocket( net_ipname->string, PORT_ANY, family );
|
sockets[NS_CLIENT] = NET_IPSocket( net_ipname->string, PORT_ANY, family );
|
||||||
}
|
}
|
||||||
|
|
||||||
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
@ -2023,6 +2019,21 @@ void NET_Config( qboolean multiplayer, qboolean changeport )
|
|||||||
if( net.allow_ip6 )
|
if( net.allow_ip6 )
|
||||||
NET_OpenIP( changeport, net.ip6_sockets, net_ip6name->string, net_ip6hostport->value, net_ip6clientport->value, AF_INET6 );
|
NET_OpenIP( changeport, net.ip6_sockets, net_ip6name->string, net_ip6hostport->value, net_ip6clientport->value, AF_INET6 );
|
||||||
|
|
||||||
|
// validate sockets for dedicated
|
||||||
|
if( Host_IsDedicated( ))
|
||||||
|
{
|
||||||
|
qboolean nov4, nov6;
|
||||||
|
nov4 = net.allow_ip && NET_IsSocketError( net.ip_sockets[NS_SERVER] );
|
||||||
|
nov6 = net.allow_ip6 && NET_IsSocketError( net.ip6_sockets[NS_SERVER] );
|
||||||
|
|
||||||
|
if( nov4 && nov6 )
|
||||||
|
Host_Error( "Couldn't allocate IPv4 and IPv6 server ports." );
|
||||||
|
else if( nov4 && !nov6 )
|
||||||
|
Con_Printf( S_ERROR "Couldn't allocate IPv4 server port" );
|
||||||
|
else if( !nov4 && nov6 )
|
||||||
|
Con_Printf( S_ERROR "Couldn't allocate IPv6 server_port" );
|
||||||
|
}
|
||||||
|
|
||||||
// get our local address, if possible
|
// get our local address, if possible
|
||||||
if( bFirst )
|
if( bFirst )
|
||||||
{
|
{
|
||||||
|
Loading…
Reference in New Issue
Block a user