Show
Ignore:
Timestamp:
05/03/03 09:10:11 (6 years ago)
Author:
emostar
Message:

Chat support for protocol plugin kind of. It needs work, this just gives the GP a string for the user id instead and ppid.

Location:
branches/protocol_plugin_1_3_0/licq
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • branches/protocol_plugin_1_3_0/licq/include/licq_chat.h

    r3197 r3487  
    189189  const char *Name() { return m_szName; } 
    190190  unsigned long Uin() { return m_nUin; } 
     191  char *Id() { return m_szId; } 
     192  unsigned long PPID() { return m_nPPID; } 
    191193  unsigned short Port() { return m_nPort; } 
    192194  int ColorForeRed() { return m_nColorForeRed; } 
     
    197199  int ColorBackBlue() { return m_nColorBackBlue; } 
    198200 
    199   virtual ~CPChat_Color() { if (m_szName != NULL) free(m_szName); } 
     201  virtual ~CPChat_Color() { if (m_szName != NULL) free(m_szName); if (m_szId != NULL) free(m_szId); } 
     202 
    200203protected: 
    201204  unsigned long m_nUin; 
     205  char *m_szId; 
     206  unsigned long m_nPPID; 
    202207  char *m_szName; 
    203208  unsigned short m_nPort; 
     
    219224  CChatClient(); 
    220225  CChatClient(ICQUser *); 
     226  ~CChatClient() { if (m_szId) free(m_szId); } 
    221227 
    222228  // Initialize from the handshake buffer (does not set the session 
     
    230236  unsigned short m_nPort; 
    231237  unsigned long m_nUin; 
     238  char *m_szId; 
     239  unsigned long m_nPPID; 
    232240  unsigned long m_nIp; 
    233241  unsigned long m_nIntIp; 
     
    264272  CPChat_ColorFont(CBuffer &); 
    265273 
    266   virtual ~CPChat_ColorFont()  {  if (m_szName != NULL) free (m_szName); if (m_szFontFamily != NULL) free(m_szFontFamily); } 
     274  virtual ~CPChat_ColorFont()  {  if (m_szName != NULL) free (m_szName); if (m_szFontFamily != NULL) free(m_szFontFamily); if (m_szId != NULL) free(m_szId); } 
    267275 
    268276  // Accessors 
    269277  const char *Name() { return m_szName; } 
    270278  unsigned long Uin() { return m_nUin; } 
     279  char *Id() { return m_szId; } 
     280  unsigned long PPID() { return m_nPPID; } 
    271281  unsigned short Session() { return m_nSession; } 
    272282  int ColorForeRed() { return m_nColorForeRed; } 
     
    290300protected: 
    291301  unsigned long m_nUin; 
     302  char *m_szId; 
     303  unsigned long m_nPPID; 
    292304  unsigned short m_nSession; 
    293305  char *m_szName; 
     
    443455public: 
    444456  unsigned long Uin()          { return uin; } 
     457  char *Id()                   { return szId; } 
     458  unsigned long PPID()         { return nPPID; } 
    445459  unsigned long ToKick()       { return nToKick; } 
    446460  const char *Name()           { return chatname; } 
     
    458472  bool Sleep()                 { return sleep; } 
    459473 
    460   ~CChatUser() {} 
     474  ~CChatUser() {if (szId) free(szId);} 
    461475 
    462476protected: 
     
    464478 
    465479  unsigned long uin; 
     480  char *szId; 
     481  unsigned long nPPID; 
    466482  unsigned long nToKick; 
    467483  char chatname[32]; 
     
    580596  int pipe_events[2], pipe_thread[2]; 
    581597  unsigned long m_nUin; 
     598  char *m_szId; 
     599  unsigned long m_nPPID; 
    582600  unsigned short m_nSession; 
    583601  ChatUserList chatUsers; 
  • branches/protocol_plugin_1_3_0/licq/src/icqd-chat.cpp

    r3230 r3487  
    3838  m_nPort = _nLocalPort; 
    3939  m_nUin = gUserManager.OwnerUin(); 
     40  char szUin[24]; 
     41  sprintf(szUin, "%lu", m_nUin); 
     42  m_szId = strdup(szUin); 
     43  m_nPPID = LICQ_PPID; 
    4044  m_nColorForeRed = nColorForeRed; 
    4145  m_nColorForeGreen = nColorForeGreen; 
     
    7276  b.UnpackUnsignedLong(); 
    7377  m_nUin = b.UnpackUnsignedLong(); 
     78  char szUin[24]; 
     79  sprintf(szUin, "%lu", m_nUin); 
     80  m_szId = strdup(szUin); 
     81  m_nPPID = LICQ_PPID; 
    7482  m_szName = strdup(b.UnpackString(buf, sizeof(buf))); 
    7583  m_nPort = b.UnpackUnsignedShort(); 
     
    8997CChatClient::CChatClient() 
    9098{ 
    91   m_nVersion = m_nUin = m_nIp = m_nIntIp = m_nPort = m_nMode 
     99  m_nVersion = m_nUin = m_nPPID = m_nIp = m_nIntIp = m_nPort = m_nMode 
    92100     = m_nSession = m_nHandshake = 0; 
     101  m_szId = NULL; 
    93102} 
    94103 
     
    98107  m_nVersion = u->Version(); 
    99108  m_nUin = u->Uin(); 
     109  m_szId = strdup(u->IdString()); 
     110  m_nPPID = u->PPID(); 
    100111  m_nIp = u->Ip(); 
    101112  m_nIntIp = u->IntIp(); 
     
    121132  b.UnpackUnsignedShort(); 
    122133  m_nUin = b.UnpackUnsignedLong(); 
     134  char szUin[24]; 
     135  sprintf(szUin, "%lu", m_nUin); 
     136  m_szId = strdup(szUin); 
     137  m_nPPID = LICQ_PPID; 
    123138  m_nIp = b.UnpackUnsignedLong(); 
    124139  m_nIntIp = b.UnpackUnsignedLong(); 
     
    141156  b.UnpackUnsignedLong(); 
    142157  m_nUin = b.UnpackUnsignedLong(); 
     158  char szUin[24]; 
     159  sprintf(szUin, "%lu", m_nUin); 
     160  m_szId = strdup(szUin); 
     161  m_nPPID = LICQ_PPID; 
    143162  m_nIp = b.UnpackUnsignedLong(); 
    144163  m_nIntIp = b.UnpackUnsignedLong(); 
     
    163182  b.UnpackUnsignedLong(); 
    164183  m_nUin = b.UnpackUnsignedLong(); 
     184  char szUin[24]; 
     185  sprintf(szUin, "%lu", m_nUin); 
     186  m_szId = strdup(szUin); 
     187  m_nPPID = LICQ_PPID; 
    165188  m_nIp = b.UnpackUnsignedLong();  // Will probably be zero... 
    166189  m_nIntIp = b.UnpackUnsignedLong(); 
     
    182205  m_nVersion = hand.VersionMajor(); 
    183206  m_nUin = hand.SourceUin(); 
     207  char szUin[24]; 
     208  sprintf(szUin, "%lu", m_nUin); 
     209  m_szId = strdup(szUin); 
     210  m_nPPID = LICQ_PPID; 
    184211  m_nIntIp = hand.LocalIp(); 
    185212  m_nIp = hand.RealIp(); 
     
    201228  m_nVersion = hand.VersionMajor(); 
    202229  m_nUin = hand.SourceUin(); 
     230  char szUin[24]; 
     231  sprintf(szUin, "%lu", m_nUin); 
     232  m_szId = strdup(szUin); 
     233  m_nPPID = LICQ_PPID; 
    203234  m_nIntIp = hand.LocalIp(); 
    204235  m_nIp = hand.RealIp(); 
     
    226257  m_nPort = nLocalPort; 
    227258  m_nUin = gUserManager.OwnerUin(); 
     259  char szUin[24]; 
     260  sprintf(szUin, "%lu", m_nUin); 
     261  m_szId = strdup(szUin); 
     262  m_nPPID = LICQ_PPID; 
    228263  m_nColorForeRed = nColorForeRed; 
    229264  m_nColorForeGreen = nColorForeGreen; 
     
    293328  b.UnpackUnsignedLong(); 
    294329  m_nUin = b.UnpackUnsignedLong(); 
     330  char szUin[24]; 
     331  sprintf(szUin, "%lu", m_nUin); 
     332  m_szId = strdup(szUin); 
     333  m_nPPID = LICQ_PPID; 
    295334  m_szName = strdup(b.UnpackString(buf, sizeof(buf))); 
    296335  m_nColorForeRed = (unsigned char)b.UnpackChar(); 
     
    523562{ 
    524563  uin = 0; 
     564  szId = 0; 
     565  nPPID = 0; 
    525566  nToKick = 0; 
    526567  state = CHAT_STATE_DISCONNECTED; 
     
    572613 
    573614  m_nUin = nUin; 
     615  char szUin[24]; 
     616  sprintf(szUin, "%lu", m_nUin); 
     617  m_szId = strdup(szUin); 
     618  m_nPPID = LICQ_PPID; 
     619 
    574620//  m_nSession = rand(); 
    575621  licqDaemon = d; 
     
    647693  if (!StartChatServer()) return; 
    648694 
    649   ICQUser *u = gUserManager.FetchUser(m_nUin, LOCK_R); 
     695  ICQUser *u = gUserManager.FetchUser(m_szId, LICQ_PPID, LOCK_R); 
    650696  if (u == NULL) return; 
    651697  m_pChatClient = new CChatClient(u); 
     
    669715  u->m_pClient->m_nSession = m_nSession; 
    670716  u->uin = c->m_nUin; 
     717  u->szId = strdup(c->m_szId); 
     718  u->nPPID = c->m_nPPID; 
    671719 
    672720  bool bSendIntIp = false; 
     
    720768  u->m_pClient->m_nVersion = s->Version(); 
    721769  u->m_pClient->m_nUin = s->Owner(); 
     770  u->m_pClient->m_szId = s->OwnerId(); 
     771  u->m_pClient->m_nPPID = s->OwnerPPID(); 
    722772  u->m_pClient->m_nIp = s->RemoteIp(); 
    723773  u->m_pClient->m_nIntIp = s->RemoteIp(); 
     
    730780 
    731781  u->uin = u->m_pClient->m_nUin; 
     782  u->szId = strdup(u->m_pClient->m_szId); 
     783  u->nPPID = u->m_pClient->m_nPPID; 
    732784  u->state = CHAT_STATE_WAITxFORxCOLOR; 
    733785  chatUsers.push_back(u); 
     
    803855          break; 
    804856      } 
    805       gLog.Info("%sChat: Received handshake from %ld [v%ld].\n", L_TCPxSTR, 
    806          u->m_pClient->m_nUin, u->sock.Version()); 
     857      gLog.Info("%sChat: Received handshake from %s [v%ld].\n", L_TCPxSTR, 
     858         u->m_pClient->m_szId, u->sock.Version()); 
    807859      u->uin = u->m_pClient->m_nUin; 
     860      if (u->szId)  free(u->szId); 
     861      u->szId = strdup(u->m_pClient->m_szId); 
     862      u->nPPID = u->m_pClient->m_nPPID; 
    808863      u->state = CHAT_STATE_WAITxFORxCOLOR; 
    809864      break; 
     
    836891      { 
    837892        // Skip this guys client info and anybody we haven't connected to yet 
    838         if ((*iter)->uin == u->uin || (*iter)->m_pClient->m_nUin == 0) continue; 
     893        if ((strcmp((*iter)->szId, u->szId) == 0 && (*iter)->nPPID == u->nPPID) 
     894            || (*iter)->m_pClient->m_szId == 0) continue; 
    839895        l.push_back((*iter)->m_pClient); 
    840896      } 
     
    882938      CPChat_ColorFont pin(u->sock.RecvBuffer()); 
    883939      u->uin = pin.Uin(); 
     940      u->szId = strdup(pin.Id()); 
     941      u->nPPID = pin.PPID(); 
    884942//      m_nSession = pin.Session(); 
    885943 
     
    916974          for (iter2 = chatUsers.begin(); iter2 != chatUsers.end(); iter2++) 
    917975          { 
    918             if ((*iter2)->uin == iter->m_nUin) break; 
     976            if (strcmp((*iter2)->szId, iter->m_szId) == 0 && 
     977                (*iter2)->nPPID == iter->m_nPPID) break; 
    919978          } 
    920979          if (iter2 != chatUsers.end()) continue; 
     
    22622321  } 
    22632322  if (iter != cmList.end()) cmList.erase(iter); 
    2264 } 
    2265  
     2323 
     2324  if (m_szId) free(m_szId); 
     2325} 
     2326