Changeset 6405 for trunk/licq/src/icqd-chat.cpp
- Timestamp:
- 07/03/08 22:13:49 (5 months ago)
- Files:
-
- 1 modified
-
trunk/licq/src/icqd-chat.cpp (modified) (23 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/licq/src/icqd-chat.cpp
r6402 r6405 124 124 { 125 125 m_nVersion = u->Version(); 126 m_nUin = u->Uin();127 126 m_szId = strdup(u->IdString()); 127 m_nUin = strtoul(m_szId, NULL, 10); 128 128 m_nPPID = u->PPID(); 129 129 m_nIp = u->Ip(); … … 793 793 bool bTryDirect = true; 794 794 bool bResult = false; 795 ICQUser *temp_user = gUserManager.FetchUser(u->uin, LOCK_R);795 ICQUser* temp_user = gUserManager.FetchUser(u->szId, u->nPPID, LOCK_R); 796 796 if (temp_user != NULL) 797 797 { … … 883 883 u->m_pClient = new CChatClient(); 884 884 u->m_pClient->m_nVersion = s->Version(); 885 u->m_pClient->m_nUin = s->Owner();886 885 u->m_pClient->m_szId = strdup(s->OwnerId()); 886 u->m_pClient->m_nUin = strtoul(u->m_pClient->m_szId, NULL, 10); 887 887 u->m_pClient->m_nPPID = s->OwnerPPID(); 888 888 u->m_pClient->m_nIp = s->RemoteIp(); … … 1090 1090 1091 1091 CPChat_ColorFont pin(u->sock.RecvBuffer()); 1092 u->uin = pin.Uin();1093 1092 u->szId = strdup(pin.Id()); 1093 u->uin = strtoul(u->szId, NULL, 10); 1094 1094 u->nPPID = pin.PPID(); 1095 1095 // m_nSession = pin.Session(); … … 1462 1462 unsigned long nUin = u->chatQueue[0] | (u->chatQueue[1] << 8) | 1463 1463 (u->chatQueue[2] << 16) | (u->chatQueue[3] << 24); 1464 char id[16]; 1465 snprintf(id, 16, "%lu", nUin); 1464 1466 1465 1467 // Deque all the characters … … 1471 1473 for (iter = chatUsers.begin(); iter != chatUsers.end(); ++iter) 1472 1474 { 1473 if ((*iter)->Uin() == nUin)1475 if (strcmp((*iter)->Id(), id) == 0) 1474 1476 break; 1475 1477 } … … 1478 1480 1479 1481 CBuffer bye(4); 1480 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, nUin, true);1482 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, id, true); 1481 1483 1482 1484 CloseClient(*iter); … … 1749 1751 unsigned long nUin = u->chatQueue[0] | (u->chatQueue[1] << 8) | 1750 1752 (u->chatQueue[2] << 16) | (u->chatQueue[3] << 24); 1753 char id[16]; 1754 snprintf(id, 16, "%lu", nUin); 1751 1755 1752 1756 // Find the user and say bye-bye to him … … 1754 1758 for (iter = chatUsers.begin(); iter != chatUsers.end(); ++iter) 1755 1759 { 1756 if ((*iter)->Uin() == nUin)1760 if (strcmp((*iter)->Id(), id) == 0) 1757 1761 break; 1758 1762 } … … 1761 1765 1762 1766 CBuffer bye(4); 1763 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, nUin, true);1767 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, id, true); 1764 1768 1765 1769 CloseClient(*iter); … … 1864 1868 //-----CChatManager::SendBuffer---------------------------------------------- 1865 1869 void CChatManager::SendBuffer(CBuffer *b, unsigned char cmd, 1866 unsigned long _nUin, 1867 bool bNotIter) 1870 const char* id, bool bNotIter) 1868 1871 { 1869 1872 ChatUserList::iterator iter; … … 1871 1874 bool ok = false; 1872 1875 1873 if ( _nUin != 0)1876 if (id != NULL) 1874 1877 { 1875 1878 for (u_iter = chatUsers.begin(); u_iter != chatUsers.end(); ++u_iter) 1876 1879 { 1877 if ( (*u_iter)->Uin() == _nUin)1880 if (strcmp((*u_iter)->Id(), id) == 0) 1878 1881 break; 1879 1882 } … … 1888 1891 1889 1892 // Send it to every user 1890 if ( _nUin == 0)1893 if (id == NULL) 1891 1894 { 1892 1895 for (iter = chatUsers.begin(); iter != chatUsers.end(); ++iter) … … 2022 2025 2023 2026 2024 void CChatManager::SendKick(unsigned long _nUin) 2025 { 2027 void CChatManager::SendKick(const char* id) 2028 { 2029 unsigned long _nUin = strtoul(id, NULL, 10); 2030 2026 2031 // Take care of the vote stuff now 2027 2032 // The user we are kicking automatically is a no vote … … 2038 2043 CBuffer buf(4); 2039 2044 buf.PackUnsignedLong(_nUin); 2040 SendBuffer(&buf, CHAT_KICK, _nUin, true); 2041 } 2042 2043 2044 void CChatManager::SendKickNoVote(unsigned long _nUin) 2045 { 2045 SendBuffer(&buf, CHAT_KICK, id, true); 2046 } 2047 2048 2049 void CChatManager::SendKickNoVote(const char *id) 2050 { 2051 unsigned long _nUin = strtoul(id, NULL, 10); 2052 2046 2053 // Tell everyone that this user has been kicked 2047 2054 CBuffer buf_TellAll(6); … … 2049 2056 buf_TellAll.PackChar(0x02); 2050 2057 buf_TellAll.PackChar(0x01); 2051 SendBuffer(&buf_TellAll, CHAT_KICKxPASS, _nUin, true);2058 SendBuffer(&buf_TellAll, CHAT_KICKxPASS, id, true); 2052 2059 2053 2060 // They don't know if there was a vote or not, they just see they've been kicked … … 2055 2062 buf.PackChar(0x02); 2056 2063 buf.PackChar(0x01); 2057 SendBuffer(&buf, CHAT_KICKxYOU, _nUin, false);2064 SendBuffer(&buf, CHAT_KICKxYOU, id, false); 2058 2065 2059 2066 // And close the connection to the kicked user … … 2061 2068 for (iter = chatUsers.begin(); iter != chatUsers.end(); ++iter) 2062 2069 { 2063 if( (*iter)->Uin() == _nUin)2070 if(strcmp((*iter)->Id(), id) == 0) 2064 2071 break; 2065 2072 } … … 2068 2075 2069 2076 CBuffer bye(4); 2070 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, _nUin, false);2077 SendBuffer(&bye, CHAT_DISCONNECTIONxKICKED, id, false); 2071 2078 2072 2079 CloseClient(*iter); … … 2247 2254 void CChatManager::FinishKickVote(VoteInfoList::iterator iter, bool bPassed) 2248 2255 { 2256 char voteId[16]; 2257 snprintf(voteId, 16, "%lu", (*iter)->nUin); 2258 2249 2259 // Find the person we are kicking in the ChatUserList 2250 2260 ChatUserList::iterator userIter; 2251 2261 for (userIter = chatUsers.begin(); userIter != chatUsers.end(); ++userIter) 2252 2262 { 2253 if ( (*userIter)->Uin() == (*iter)->nUin)2263 if (strcmp((*userIter)->Id(), voteId) == 0) 2254 2264 break; 2255 2265 } … … 2271 2281 2272 2282 if (bPassed) 2273 SendBuffer(&buf, CHAT_KICKxPASS, (*iter)->nUin, true);2283 SendBuffer(&buf, CHAT_KICKxPASS, voteId, true); 2274 2284 else 2275 SendBuffer(&buf, CHAT_KICKxFAIL, (*iter)->nUin, true);2285 SendBuffer(&buf, CHAT_KICKxFAIL, voteId, true); 2276 2286 2277 2287 // Send the person a notice if they were kicked 2278 2288 if (bPassed) 2279 2289 { 2280 SendBuffer(&buf, CHAT_KICKxYOU, (*iter)->nUin, false);2290 SendBuffer(&buf, CHAT_KICKxYOU, voteId, false); 2281 2291 CloseClient(*userIter); 2282 2292 } … … 2321 2331 if (sz[0] != '\0') nPos += sprintf(&sz[nPos], ", "); 2322 2332 if ((*iter)->Name()[0] == '\0') 2323 nPos += sprintf(&sz[nPos], "% lu", (*iter)->Uin());2333 nPos += sprintf(&sz[nPos], "%s", (*iter)->Id()); 2324 2334 else 2325 2335 nPos += sprintf(&sz[nPos], "%s", (*iter)->Name()); … … 2501 2511 2502 2512 bool bSendIntIp = false; 2503 ICQUser *temp_user = gUserManager.FetchUser(rc->u->Uin(), LOCK_R);2513 ICQUser* temp_user = gUserManager.FetchUser(rc->u->Id(), rc->u->PPID(), LOCK_R); 2504 2514 if (temp_user != NULL) 2505 2515 {
