コード例 #1
0
ファイル: irc.c プロジェクト: Clever-Boy/qfusion
void Irc_Disconnect_f( void )
{
	if( irc_libhandle )
	{
		bool *c;
		if( !irc_server )
			irc_server = Cvar_Get( "irc_server", "", 0 );
		if( !irc_connected )
			irc_connected = Dynvar_Lookup( "irc_connected" );
		assert( irc_connected );
		assert( irc_server );
		Dynvar_GetValue( irc_connected, (void **) &c );
		if( *c )
		{
			// still connected, proceed
			if( irc_wakelock )
			{
				Sys_ReleaseWakeLock( irc_wakelock );
				irc_wakelock = NULL;
			}
			irc_export->Disconnect();
			Dynvar_RemoveListener( irc_connected, Irc_ConnectedListener_f );
		}
		else
			Com_Printf( "Not connected.\n" );
	}
	else
		Com_Printf( "IRC module not loaded. Connect first.\n" );
}
コード例 #2
0
ファイル: sv_init.c プロジェクト: adem4ik/qfusion
/*
* SV_ShutdownGame
*
* Called when each game quits
*/
void SV_ShutdownGame( const char *finalmsg, bool reconnect ) {
	if( !svs.initialized ) {
		return;
	}

	if( svs.demo.file ) {
		SV_Demo_Stop_f();
	}

	if( svs.clients ) {
		SV_FinalMessage( finalmsg, reconnect );
	}

	SV_ShutdownGameProgs();

	// SV_MM_Shutdown();

	SV_MasterSendQuit();

	NET_CloseSocket( &svs.socket_loopback );
	NET_CloseSocket( &svs.socket_udp );
	NET_CloseSocket( &svs.socket_udp6 );
#ifdef TCP_ALLOW_CONNECT
	if( sv_tcp->integer ) {
		NET_CloseSocket( &svs.socket_tcp );
		NET_CloseSocket( &svs.socket_tcp6 );
	}
#endif

	// get any latched variable changes (sv_maxclients, etc)
	Cvar_GetLatchedVars( CVAR_LATCH );

	if( svs.clients ) {
		Mem_Free( svs.clients );
		svs.clients = NULL;
	}

	if( svs.client_entities.entities ) {
		Mem_Free( svs.client_entities.entities );
		memset( &svs.client_entities, 0, sizeof( svs.client_entities ) );
	}

	if( svs.cms ) {
		// CM_ReleaseReference will take care of freeing up the memory
		// if there are no other modules referencing the collision model
		CM_ReleaseReference( svs.cms );
		svs.cms = NULL;
	}

	Com_SetServerCM( NULL, 0 );

	memset( &sv, 0, sizeof( sv ) );
	Com_SetServerState( sv.state );

	Com_FreePureList( &svs.purelist );

	if( svs.motd ) {
		Mem_Free( svs.motd );
		svs.motd = NULL;
	}

	if( sv_mempool ) {
		Mem_EmptyPool( sv_mempool );
	}

	if( svs.wakelock ) {
		Sys_ReleaseWakeLock( svs.wakelock );
		svs.wakelock = NULL;
	}

	memset( &svs, 0, sizeof( svs ) );

	svs.initialized = false;
}