core/PlayerManager.cpp
changeset 647 1e29dcc9ca97
parent 644 2a90d4324fc0
child 648 a351d398632b
     1.1 --- a/core/PlayerManager.cpp	Mon Mar 19 01:29:29 2007 +0000
     1.2 +++ b/core/PlayerManager.cpp	Mon Mar 19 01:44:09 2007 +0000
     1.3 @@ -118,6 +118,10 @@
     1.4  			pPlayer->m_AuthID.assign(authstr);
     1.5  			pPlayer->m_IsAuthorized = true;
     1.6  
     1.7 +			/* Mark as removed from queue */
     1.8 +			m_AuthQueue[i] = 0;
     1.9 +			removed++;
    1.10 +
    1.11  			/* Send to extensions */
    1.12  			List<IClientListener *>::iterator iter;
    1.13  			IClientListener *pListener;
    1.14 @@ -125,19 +129,20 @@
    1.15  			{
    1.16  				pListener = (*iter);
    1.17  				pListener->OnClientAuthorized(m_AuthQueue[i], authstr);
    1.18 +				if (!pPlayer->IsConnected())
    1.19 +				{
    1.20 +					break;
    1.21 +				}
    1.22  			}
    1.23  
    1.24 -			/* Send to plugins */
    1.25 -			if (m_clauth->GetFunctionCount())
    1.26 +			/* Send to plugins if player is still connected */
    1.27 +			if (pPlayer->IsConnected() && m_clauth->GetFunctionCount())
    1.28  			{
    1.29 +				/* :TODO: handle the case of a player disconnecting in the middle */
    1.30  				m_clauth->PushCell(m_AuthQueue[i]);
    1.31  				m_clauth->PushString(authstr);
    1.32  				m_clauth->Execute(NULL);
    1.33  			}
    1.34 -
    1.35 -			/* Mark as removed from queue */
    1.36 -			m_AuthQueue[i] = 0;
    1.37 -			removed++;
    1.38  		}
    1.39  	}
    1.40