From: Jon K. <em...@us...> - 2003-10-16 06:31:36
|
Update of /cvsroot/licq/licq/src In directory sc8-pr-cvs1:/tmp/cvs-serv16667 Modified Files: icqd-srv.cpp icqd.cpp icqpacket.cpp user.cpp Log Message: I think this is ok... Updating info is screwy, I need to fix it to use the new method, so it works properly for all information fields. Index: icqd-srv.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v retrieving revision 1.117 retrieving revision 1.118 diff -u -d -r1.117 -r1.118 --- icqd-srv.cpp 10 Jul 2003 14:22:46 -0000 1.117 +++ icqd-srv.cpp 16 Oct 2003 06:31:18 -0000 1.118 @@ -38,7 +38,7 @@ bool _bAuthRequired) { if (_nPPID == LICQ_PPID) - icqAddUser(strtoul(_szId, (char **)NULL, 10), _bAuthRequired); + icqAddUser(_szId, _bAuthRequired); else PushProtoSignal(new CAddUserSignal(_szId, _bAuthRequired), _nPPID); } @@ -54,33 +54,23 @@ // Server side list add, and update of group if (UseServerContactList()) { - //icqAddUserServer(_nUin, _bAuthRequired); + icqAddUserServer(_szId, _bAuthRequired); } - //icqUserBasicInfo(_nUin); + icqUserBasicInfo(_szId); } void CICQDaemon::icqAddUser(unsigned long _nUin, bool _bAuthRequired) { char szUin[24]; sprintf(szUin, "%lu", _nUin); - CSrvPacketTcp *p = new CPU_GenericUinList(szUin, ICQ_SNACxFAM_BUDDY, ICQ_SNACxBDY_ADDxTOxLIST); - gLog.Info("%sAlerting server to new user (#%lu)...\n", L_SRVxSTR, - p->Sequence()); - SendExpectEvent_Server(szUin, LICQ_PPID, p, NULL); - // Server side list add, and update of group - if (UseServerContactList()) - { - icqAddUserServer(_nUin, _bAuthRequired); - } - - icqUserBasicInfo(_nUin); + icqAddUser(szUin, _bAuthRequired); } //-----icqAddUserServer--------------------------------------------------------- -void CICQDaemon::icqAddUserServer(unsigned long _nUin, bool _bAuthRequired) +void CICQDaemon::icqAddUserServer(const char *_szId, bool _bAuthRequired) { CSrvPacketTcp *pStart = 0; @@ -93,20 +83,25 @@ ICQ_SNACxLIST_ROSTxEDITxSTART); SendEvent_Server(pStart); - char szUin[13]; - snprintf(szUin, 12, "%lu", _nUin); - szUin[12] = 0; - pthread_mutex_lock(&mutex_modifyserverusers); - m_lszModifyServerUsers.push_back(strdup(szUin)); + m_lszModifyServerUsers.push_back(strdup(_szId)); pthread_mutex_unlock(&mutex_modifyserverusers); - CPU_AddToServerList *pAdd = new CPU_AddToServerList(szUin, ICQ_ROSTxNORMAL, + CPU_AddToServerList *pAdd = new CPU_AddToServerList(_szId, ICQ_ROSTxNORMAL, 0, _bAuthRequired); - gLog.Info("%sAdding %s to server list...\n", L_SRVxSTR, szUin); + gLog.Info("%sAdding %s to server list...\n", L_SRVxSTR, _szId); SendExpectEvent_Server(0, pAdd, NULL); } +void CICQDaemon::icqAddUserServer(unsigned long _nUin, bool _bAuthRequired) +{ + char szUin[13]; + snprintf(szUin, 12, "%lu", _nUin); + szUin[12] = 0; + + icqAddUserServer(szUin, _bAuthRequired); +} + //-----CheckExport-------------------------------------------------------------- void CICQDaemon::CheckExport() { @@ -560,17 +555,28 @@ } //-----icqRequestMetaInfo---------------------------------------------------- -unsigned long CICQDaemon::icqRequestMetaInfo(unsigned long nUin) +unsigned long CICQDaemon::icqRequestMetaInfo(const char *_szId) { - CPU_Meta_RequestAllInfo *p = new CPU_Meta_RequestAllInfo(nUin); - gLog.Info("%sRequesting meta info for %lu (#%lu/#%d)...\n", L_SRVxSTR, nUin, + CPU_Meta_RequestAllInfo *p = new CPU_Meta_RequestAllInfo(_szId); + gLog.Info("%sRequesting meta info for %s (#%lu/#%d)...\n", L_SRVxSTR, _szId, p->Sequence(), p->SubSequence()); - ICQEvent *e = SendExpectEvent_Server(nUin, p, NULL, true); + //XXX not yet + //ICQEvent *e = SendExpectEvent_Server(_szId, LICQ_PPID, p, NULL, true); + ICQEvent *e = SendExpectEvent_Server(strtoul(_szId, (char **)NULL, 10), p, NULL, true); if (e != NULL) return e->EventId(); return 0; } +unsigned long CICQDaemon::icqRequestMetaInfo(unsigned long nUin) +{ + char szUin[13]; + snprintf(szUin, 12, "%lu", nUin); + szUin[12] = 0; + + return icqRequestMetaInfo(szUin); +} + //-----icqSetStatus------------------------------------------------------------- unsigned long CICQDaemon::ProtoSetStatus(unsigned long _nPPID, unsigned short _nNewStatus) @@ -830,18 +836,29 @@ } //-----icqGetUserBasicInfo------------------------------------------------------ -unsigned long CICQDaemon::icqUserBasicInfo(unsigned long _nUin) +unsigned long CICQDaemon::icqUserBasicInfo(const char *_szId) { - //CPU_Meta_RequestBasicInfo *p = new CPU_Meta_RequestBasicInfo(_nUin); - CPU_Meta_RequestAllInfo *p = new CPU_Meta_RequestAllInfo(_nUin); + //CPU_Meta_RequestBasicInfo *p = new CPU_Meta_RequestBasicInfo(_szId); + CPU_Meta_RequestAllInfo *p = new CPU_Meta_RequestAllInfo(_szId); gLog.Info("%sRequesting user info (#%lu/#%d)...\n", L_SRVxSTR, p->Sequence(), p->SubSequence()); - ICQEvent *e = SendExpectEvent_Server(_nUin, p, NULL, true); + //XXX not yet + //ICQEvent *e = SendExpectEvent_Server(_szId, LICQ_PPID, p, NULL, true); + ICQEvent *e = SendExpectEvent_Server(strtoul(_szId, (char **)NULL, 10), p, NULL, true); if (e != NULL) return e->EventId(); return 0; } +unsigned long CICQDaemon::icqUserBasicInfo(unsigned long _nUin) +{ + char szUin[13]; + snprintf(szUin, 12, "%lu", _nUin); + szUin[12] = 0; + + return icqUserBasicInfo(szUin); +} + //-----icqPing------------------------------------------------------------------ void CICQDaemon::icqPing() { @@ -1440,6 +1457,7 @@ if (m_bProxyEnabled) InitProxy(); + // Which protocol plugin? int r = ConnectToServer(m_szICQServer, m_nICQServerPort); write(pipe_newsocket[PIPE_WRITE], "S", 1); @@ -1450,7 +1468,7 @@ int CICQDaemon::ConnectToServer(const char* server, unsigned short port) { SrvSocket *s = new SrvSocket(gUserManager.OwnerUin()); - + if (m_bProxyEnabled) { if (m_xProxy == NULL) Index: icqd.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd.cpp,v retrieving revision 1.75 retrieving revision 1.76 diff -u -d -r1.75 -r1.76 --- icqd.cpp 2 Jul 2003 04:41:01 -0000 1.75 +++ icqd.cpp 16 Oct 2003 06:31:18 -0000 1.76 @@ -1152,7 +1152,7 @@ } ICQEvent *CICQDaemon::SendExpectEvent_Server(const char *szId, unsigned long nPPID, - CPacket *packet, CUserEvent *ue) + CPacket *packet, CUserEvent *ue, bool bExtendedEvent) { // If we are already shutting down, don't start any events if (m_bShuttingDown) @@ -1168,7 +1168,27 @@ if (e == NULL) return NULL; - return SendExpectEvent(e, &ProcessRunningEvent_Server_tep); + if (bExtendedEvent) PushExtendedEvent(e); + + ICQEvent *result = SendExpectEvent(e, &ProcessRunningEvent_Server_tep); + + // if an error occured, remove the event from the extended queue as well + if (result == NULL && bExtendedEvent) + { + pthread_mutex_lock(&mutex_extendedevents); + std::list<ICQEvent *>::iterator i; + for (i = m_lxExtendedEvents.begin(); i != m_lxExtendedEvents.end(); i++) + { + if (*i == e) + { + m_lxExtendedEvents.erase(i); + break; + } + } + pthread_mutex_unlock(&mutex_extendedevents); + } + + return result; } ICQEvent *CICQDaemon::SendExpectEvent_Server(unsigned long nUin, CPacket *packet, Index: icqpacket.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqpacket.cpp,v retrieving revision 1.91 retrieving revision 1.92 diff -u -d -r1.91 -r1.92 --- icqpacket.cpp 2 Jul 2003 04:41:01 -0000 1.91 +++ icqpacket.cpp 16 Oct 2003 06:31:18 -0000 1.92 @@ -2699,7 +2699,6 @@ } -//-----Meta_SetGeneralInfo--------------------------------------------------- CPU_Meta_SetGeneralInfo::CPU_Meta_SetGeneralInfo(const char *szAlias, const char *szFirstName, const char *szLastName, const char *szEmailPrimary, @@ -2982,11 +2981,11 @@ //-----Meta_RequestInfo------------------------------------------------------ -CPU_Meta_RequestAllInfo::CPU_Meta_RequestAllInfo(unsigned long nUin) +CPU_Meta_RequestAllInfo::CPU_Meta_RequestAllInfo(const char *_szId) : CPU_CommonFamily(ICQ_SNACxFAM_VARIOUS, ICQ_SNACxMETA) { m_nMetaCommand = ICQ_CMDxMETA_REQUESTxALLxINFO; - m_nUin = nUin; + m_szId = strdup(_szId); int packetSize = 2+2+2+4+2+2+2+4; m_nSize += packetSize; @@ -3000,16 +2999,16 @@ buffer->PackUnsignedShortBE(0xd007); // type buffer->PackUnsignedShortBE(m_nSubSequence); buffer->PackUnsignedShort(m_nMetaCommand); // subtype - buffer->PackUnsignedLong(m_nUin); + buffer->PackUnsignedLong(strtoul(m_szId, (char **)NULL, 10)); } //-----Meta_RequestInfo------------------------------------------------------ -CPU_Meta_RequestBasicInfo::CPU_Meta_RequestBasicInfo(unsigned long nUin) +CPU_Meta_RequestBasicInfo::CPU_Meta_RequestBasicInfo(const char *_szId) : CPU_CommonFamily(ICQ_SNACxFAM_VARIOUS, ICQ_SNACxMETA) { m_nMetaCommand = ICQ_CMDxMETA_REQUESTxBASICxINFO; - m_nUin = nUin; + m_szId = strdup(_szId); m_nSize += 20; @@ -3021,7 +3020,7 @@ buffer->PackUnsignedLong(gUserManager.OwnerUin()); buffer->PackUnsignedShort(m_nMetaCommand); buffer->PackUnsignedShort(m_nSubSequence); - buffer->PackUnsignedLong(nUin); + buffer->PackUnsignedLong(strtoul(m_szId, (char **)NULL, 10)); } CPacketTcp_Handshake_v2::CPacketTcp_Handshake_v2(unsigned long nLocalPort) Index: user.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/user.cpp,v retrieving revision 1.76 retrieving revision 1.77 diff -u -d -r1.76 -r1.77 --- user.cpp 2 Jul 2003 04:41:01 -0000 1.76 +++ user.cpp 16 Oct 2003 06:31:18 -0000 1.77 @@ -330,19 +330,34 @@ // an owner's id and ppid. ICQOwner *CUserManager::FindOwner(const char *_szId, unsigned long _nPPID) { +/* + // Strip spaces if ICQ protocol + char *szId = new char[strlen(_szId)]; + if (_nPPID == LICQ_PPID) + { + for (int i = 0; i < strlen(_szId); i++) + if (_szId[i] != ' ') + *szId++ = _szId[i]; + } + else + strcpy(szId, _szId); +*/ ICQOwner *o = NULL; LockOwnerList(LOCK_R); OwnerList::iterator iter; for (iter = m_vpcOwners.begin(); iter != m_vpcOwners.end(); iter++) { - if (_nPPID == (*iter)->PPID() && strcmp(_szId, (*iter)->IdString()) == 0) + if (_nPPID == (*iter)->PPID() && + strcmp(_szId, (*iter)->IdString()) == 0/* || strcmp(szId, (*iter)->IdString()) == 0)*/) { o = *iter; break; } } UnlockOwnerList(); + + //delete [] szId; return o; } |