X-Git-Url: https://harrygodden.com/git/?a=blobdiff_plain;f=network.c;h=92389016c49a7a5240e03ff0794bc674ac6bfd05;hb=8090b8da9ce1397ba47d7e2d91b4f1716f708f25;hp=2219a1ce8cedd8b3b8e9999ad1f3c2fcee1ca7cd;hpb=08c07d4801fa8c134976d3c7c757179eeccd71d1;p=carveJwlIkooP6JGAAIwe30JlM.git diff --git a/network.c b/network.c index 2219a1c..9238901 100644 --- a/network.c +++ b/network.c @@ -58,6 +58,9 @@ static void request_auth_ticket(void){ } static void network_send_username(void){ + if( !network_connected() ) + return; + netmsg_playerusername *update = alloca( sizeof(netmsg_playerusername)+ NETWORK_USERNAME_MAX ); update->inetmsg_id = k_inetmsg_playerusername; @@ -267,6 +270,7 @@ static void network_disconnect(void){ SteamAPI_ISteamNetworkingSockets_CloseConnection( hSteamNetworkingSockets, network_client.remote, 0, NULL, 0 ); network_client.remote = 0; + network_client.state = k_ESteamNetworkingConnectionState_None; for( int i=0; im_info.m_eState == k_ESteamNetworkingConnectionState_ClosedByPeer ){ if( info->m_info.m_eEndReason == - k_ESteamNetConnectionEnd_Remote_Max ){ + k_ESteamNetConnectionEnd_Misc_InternalError ){ network_client.retries = 40; } network_disconnect(); @@ -373,6 +379,16 @@ static void network_connect(void){ hSteamNetworkingSockets, &remoteAddr, 0, NULL ); } +static void network_sign_on_complete(void){ + vg_success( "Sign on completed\n" ); + + /* send our init info */ + network_send_username(); + for( u32 i=0; iinetmsg_id >= 300) && (tmp->inetmsg_id < 400) ){ network_request_rx_300_400( msg ); } + else { + if( tmp->inetmsg_id == k_inetmsg_version ){ + netmsg_version *version = msg->m_pData; + if( version->version != NETWORK_SKATERIFT_VERSION ){ + network_disconnect(); + /* we dont want to connect to this server ever */ + network_client.retries = 999; + network_client.last_attempt = 999999999.9; + vg_error( "version mismatch with server\n" ); + } + else { + network_client.remote_version = version->version; + network_sign_on_complete(); + } + } + } SteamAPI_SteamNetworkingMessage_t_Release( msg ); }