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