From: Jon K. <em...@us...> - 2004-05-27 07:00:47
|
Update of /cvsroot/licq/licq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv25344/src Modified Files: icqd-srv.cpp icqd.cpp icqevent.cpp message.cpp user.cpp Log Message: Fixed a few crashes: * Users of other protocols having their groups changed (disabled now) * Unloading of protocol plugins (fixed) Added to protocol plugin API: * Granting authorization to users * Refusing authorization to users Index: icqd-srv.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v retrieving revision 1.128 retrieving revision 1.129 diff -u -d -r1.128 -r1.129 --- icqd-srv.cpp 9 May 2004 10:30:11 -0000 1.128 +++ icqd-srv.cpp 27 May 2004 07:00:24 -0000 1.129 @@ -811,9 +811,29 @@ return 0; } -//-----icqAuthorizeGrant-------------------------------------------------------- +//-----icqAuthorizeGrant------------------------------------------------------- +unsigned long CICQDaemon::ProtoAuthorizeGrant(const char *szId, + unsigned long nPPID, const char *szMessage) +{ + unsigned long nRet = 0; + + if (nPPID == LICQ_PPID) + nRet = icqAuthorizeGrant(szId, szMessage); + else + PushProtoSignal(new CGrantAuthSignal(szId, szMessage), nPPID); + return nRet; +} + unsigned long CICQDaemon::icqAuthorizeGrant(unsigned long nUin, const char *szMessage) -// authorize a user to add you to their contact list +{ + char szUin[24]; + sprintf(szUin, "%lu", nUin); + + return icqAuthorizeGrant(szUin, szMessage); +} + +unsigned long CICQDaemon::icqAuthorizeGrant(const char *szId, + const char *szMessage) { char *sz = NULL; if (szMessage != NULL) @@ -821,8 +841,8 @@ sz = gTranslator.NToRN(szMessage); gTranslator.ClientToServer(sz); } - CPU_ThroughServer *p = new CPU_ThroughServer(nUin, ICQ_CMDxSUB_AUTHxGRANTED, sz); - gLog.Info(tr("%sAuthorizing user %lu (#%lu)...\n"), L_SRVxSTR, nUin, p->Sequence()); + CPU_ThroughServer *p = new CPU_ThroughServer(szId, ICQ_CMDxSUB_AUTHxGRANTED, sz); + gLog.Info(tr("%sAuthorizing user %s (#%lu)...\n"), L_SRVxSTR, szId, p->Sequence()); delete [] sz; ICQEvent *e = SendExpectEvent_Server(0, p, NULL); @@ -831,9 +851,29 @@ return 0; } -//-----icqAuthorizeRefuse------------------------------------------------------- +//-----icqAuthorizeRefuse------------------------------------------------------ +unsigned long CICQDaemon::ProtoAuthorizeRefuse(const char *szId, + unsigned long nPPID, const char *szMessage) +{ + unsigned long nRet = 0; + + if (nPPID == LICQ_PPID) + nRet = icqAuthorizeRefuse(szId, szMessage); + else + PushProtoSignal(new CRefuseAuthSignal(szId, szMessage), nPPID); + + return nRet; +} + unsigned long CICQDaemon::icqAuthorizeRefuse(unsigned long nUin, const char *szMessage) -// refuseto authorize a user to add you to their contact list +{ + char szUin[24]; + sprintf(szUin, "%lu", nUin); + return icqAuthorizeRefuse(szUin, szMessage); +} + +unsigned long CICQDaemon::icqAuthorizeRefuse(const char *szId, + const char *szMessage) { char *sz = NULL; if (szMessage != NULL) @@ -841,9 +881,9 @@ sz = gTranslator.NToRN(szMessage); gTranslator.ClientToServer(sz); } - CPU_ThroughServer *p = new CPU_ThroughServer(nUin, ICQ_CMDxSUB_AUTHxREFUSED, sz); - gLog.Info(tr("%sRefusing authorization to user %lu (#%lu)...\n"), L_SRVxSTR, - nUin, p->Sequence()); + CPU_ThroughServer *p = new CPU_ThroughServer(szId, ICQ_CMDxSUB_AUTHxREFUSED, sz); + gLog.Info(tr("%sRefusing authorization to user %s (#%lu)...\n"), L_SRVxSTR, + szId, p->Sequence()); delete [] sz; ICQEvent *e = SendExpectEvent_Server(0, p, NULL); Index: icqd.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd.cpp,v retrieving revision 1.86 retrieving revision 1.87 diff -u -d -r1.86 -r1.87 --- icqd.cpp 2 May 2004 14:13:17 -0000 1.86 +++ icqd.cpp 27 May 2004 07:00:26 -0000 1.87 @@ -606,7 +606,7 @@ pthread_mutex_lock(&licq->mutex_protoplugins); for (iter = licq->list_protoplugins.begin(); iter != licq->list_protoplugins.end(); iter++) { - if ((*(*iter)->nId) == _nId) (*iter)->Shutdown(); + if ((*iter)->Id() == _nId) (*iter)->Shutdown(); } pthread_mutex_unlock(&licq->mutex_protoplugins); } @@ -1042,7 +1042,7 @@ icqAddUser(szId); PushPluginSignal(new CICQSignal(SIGNAL_UPDATExLIST, LIST_ADD, szId, nPPID)); - + PushProtoSignal(new CAddUserSignal(szId, false), nPPID); return true; } Index: icqevent.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqevent.cpp,v retrieving revision 1.18 retrieving revision 1.19 diff -u -d -r1.18 -r1.19 --- icqevent.cpp 7 May 2004 15:26:56 -0000 1.18 +++ icqevent.cpp 27 May 2004 07:00:26 -0000 1.19 @@ -360,3 +360,15 @@ { } +CGrantAuthSignal::CGrantAuthSignal(const char *szId, const char *szMsg) + : CSignal(PROTOxSENDxGRANTxAUTH, szId) +{ + m_szMsg = szMsg ? strdup(szMsg) : 0; +} + +CRefuseAuthSignal::CRefuseAuthSignal(const char *szId, const char *szMsg) + : CSignal(PROTOxSENDxREFUSExAUTH, szId) +{ + m_szMsg = szMsg ? strdup(szMsg) : 0; +} + Index: message.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/message.cpp,v retrieving revision 1.24 retrieving revision 1.25 diff -u -d -r1.24 -r1.25 --- message.cpp 21 Mar 2004 11:05:50 -0000 1.24 +++ message.cpp 27 May 2004 07:00:26 -0000 1.25 @@ -134,15 +134,15 @@ } -void CUserEvent::AddToHistory_Flush(ICQUser *u, char *szOut) +void CUserEvent::AddToHistory_Flush(ICQUser *u, char *szOut, unsigned long nPPID) { if (u != NULL) u->WriteToHistory(szOut); else { - ICQOwner *o = gUserManager.FetchOwner(LOCK_W); + ICQOwner *o = gUserManager.FetchOwner(nPPID, LOCK_W); o->WriteToHistory(szOut); - gUserManager.DropOwner(); + gUserManager.DropOwner(nPPID); } } @@ -433,7 +433,7 @@ nPos += sprintf(&szOut[nPos], ":%s (%s)\n:%s\n:%s\n:%s\n:%s\n", m_szId, p, m_szAlias, m_szFirstName, m_szLastName, m_szEmail); delete [] p; - AddToHistory_Flush(u, szOut); + AddToHistory_Flush(u, szOut, m_nPPID); delete [] szOut; } @@ -522,7 +522,7 @@ delete [] p; AddStrWithColons(&szOut[nPos], m_szReason); - AddToHistory_Flush(u, szOut); + AddToHistory_Flush(u, szOut, m_nPPID); delete [] szOut; } @@ -588,7 +588,7 @@ delete [] p; AddStrWithColons(&szOut[nPos], m_szMessage); - AddToHistory_Flush(u, szOut); + AddToHistory_Flush(u, szOut, m_nPPID); delete [] szOut; } @@ -654,7 +654,7 @@ delete [] p; AddStrWithColons(&szOut[nPos], m_szMessage); - AddToHistory_Flush(u, szOut); + AddToHistory_Flush(u, szOut, m_nPPID); delete [] szOut; } @@ -778,17 +778,19 @@ void CEventContactList::AddToHistory(ICQUser *u, direction _nDir) { + unsigned long nPPID = LICQ_PPID; char *szOut = new char[m_vszFields.size() * 32 + EVENT_HEADER_SIZE]; int nPos = AddToHistory_Header(_nDir, szOut); ContactList::const_iterator iter; for (iter = m_vszFields.begin(); iter != m_vszFields.end(); iter++) { char *p = PPIDSTRING((*iter)->PPID()); + nPPID = (*iter)->PPID(); nPos += sprintf(&szOut[nPos], ":%s (%s)\n:%s\n", (*iter)->IdString(), p, (*iter)->Alias()); delete [] p; } - AddToHistory_Flush(u, szOut); + AddToHistory_Flush(u, szOut, nPPID); delete [] szOut; } Index: user.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/user.cpp,v retrieving revision 1.86 retrieving revision 1.87 diff -u -d -r1.86 -r1.87 --- user.cpp 12 May 2004 10:37:56 -0000 1.86 +++ user.cpp 27 May 2004 07:00:26 -0000 1.87 @@ -1463,12 +1463,13 @@ void CUserManager::AddUserToGroup(const char *szId, unsigned long nPPID, unsigned short _nGroup) { + //TODO: For other protocols ICQUser *u = FetchUser(szId, nPPID, LOCK_W); if (u == NULL) return; u->AddToGroup(GROUPS_USER, _nGroup); int nGSID = u->GetGSID(); DropUser(u); - if (gLicqDaemon) + if (gLicqDaemon && nPPID == LICQ_PPID) gLicqDaemon->icqChangeGroup(szId, nPPID, _nGroup, nGSID, ICQ_ROSTxNORMAL, ICQ_ROSTxNORMAL); } @@ -3796,4 +3797,5 @@ close(source); close(dest); } - } +} + |