Ticket #1445: newdiff.patch

File newdiff.patch, 6.1 kB (added by emostar, 23 months ago)

Protocol upgrade

  • include/licq_icq.h

     
    77#define MODE_INDIRECT 0x02 
    88#define MODE_DENIED   0x01  // user denies direct connection from "any" user 
    99 
    10 #define ICQ_VERSION 8 
    11 const unsigned short ICQ_VERSION_TCP               = 0x0008; 
     10#define ICQ_VERSION 9 
     11const unsigned short ICQ_VERSION_TCP               = 0x0009; 
    1212 
    1313#define LICQ_WITHSSL     0x7D800000 
    1414#define LICQ_WITHOUTSSL  0x7D000000 
     
    558558                                          ' ',  'R',  '.',  'K',  '.',  ' ',  
    559559                                          0x00, 0x00, 0x00, 0x00 }; 
    560560 
     561const char ICQ_CAPABILITY_AIM_FILE[]  = { 0x09, 0x46, 0x13, 0x43, 0x4c, 0x7f, 
     562                                          0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 
     563                                          0x53, 0x54, 0x00, 0x00 }; 
     564 
     565const char ICQ_CAPABILITY_UNKNOWN1[]  = { 0xb2, 0xec, 0x8f, 0x16, 0x7c, 0x6f, 
     566                                          0x45, 0x1b, 0xbd, 0x79, 0xdc, 0x58, 
     567                                          0x49, 0x78, 0x88, 0xb9 }; 
     568const char ICQ_CAPABILITY_UNKNOWN2[]  = {0x09, 0x46, 0x13, 0x4c, 0x4c, 0x7f, 0x11, 0xd1, 0x82, 0x22, 0x44, 0x45, 0x53, 0x54, 0x00, 0x00  }; 
     569const char ICQ_CAPABILITY_UNKNOWN3[]  = {0x17, 0x8c, 0x2d, 0x9b, 0xda, 0xa5, 0x45, 0xbb, 0x8d, 0xdb, 0xf3, 0xbd, 0xbd, 0x53, 0xa1, 0x0a  }; 
     570const char ICQ_CAPABILITY_UNKNOWN4[]  = {0x67, 0x36, 0x15, 0x15, 0x61, 0x2d, 0x4c, 0x07, 0x8f, 0x3d, 0xbd, 0xe6, 0x40, 0x8e, 0xa0, 0x41 }; 
     571const char ICQ_CAPABILITY_UNKNOWN5[]  = {0xb9, 0x97, 0x08, 0xb5, 0x3a, 0x92, 0x42, 0x02, 0xb0, 0x69, 0xf1, 0xe7, 0x57, 0xbb, 0x2e, 0x17 }; 
     572// Unknown {b2ec8f16-7c6f-451b-bd79-dc58497888b9} 
     573// Unknown {0946134c-4c7f-11d1-8222-444553540000} 
     574// Unknown {178c2d9b-daa5-45bb-8ddb-f3bdbd53a10a} 
     575// Unknown {67361515-612d-4c07-8f3d-bde6408ea041} 
     576// Unknown {b99708b5-3a92-4202-b069-f1e757bb2e17} 
     577// Send File {09461343-4c7f-11d1-8222-444553540000} 
     578// Unknown {563fc809-0b6f-41bd-9f79-422609dfa2f3} TYPING 
     579// Unknown {1a093c6c-d7fd-4ec5-9d51-a6474e34f5a0} XTRA 
     580 
    561581// XtraAway 
    562582const int XTRA_AWAY_COUNT             = 32; 
    563583const char XtraAwayCaps[XTRA_AWAY_COUNT][0x10] =  
  • include/licq_icqd.h

     
    817817  unsigned long icqRequestStatusPlugin(ICQUser *, bool, const char *); 
    818818  void icqUpdateInfoTimestamp(const char *); 
    819819 
     820  // Xtraz 
     821  int checkXtraAway(char *); 
     822 
    820823  void StupidChatLinkageFix(); 
    821824 
    822825  // Declare all our thread functions as friends 
  • src/icqpacket.cpp

     
    827827  buffer->PackUnsignedShortBE(0x0014); 
    828828  // Client version minor 
    829829  buffer->PackUnsignedLongBE(0x00180002); 
    830   buffer->PackUnsignedShortBE(0x0022); 
     830  buffer->PackUnsignedShortBE(0x0034); 
    831831  buffer->PackUnsignedLongBE(0x00190002); 
    832832  buffer->PackUnsignedShortBE(0x0000); 
    833833  // Client version build 
     
    923923CPU_CapabilitySettings::CPU_CapabilitySettings() 
    924924  : CPU_CommonFamily(ICQ_SNACxFAM_LOCATION, ICQ_SNACxLOC_SETxUSERxINFO) 
    925925{ 
    926   char data[7][CAP_LENGTH]; 
     926  char data[13][CAP_LENGTH]; 
    927927  m_nSize += 4 + sizeof(data); 
    928928  InitBuffer(); 
    929929 
     
    934934  memcpy(data[4], ICQ_CAPABILITY_AIMxINTER, CAP_LENGTH); 
    935935  memcpy(data[5], ICQ_CAPABILITY_RTFxMSGS, CAP_LENGTH); 
    936936  memcpy(data[6], ICQ_CAPABILITY_ICHAT, CAP_LENGTH); 
     937  memcpy(data[7], ICQ_CAPABILITY_UTF8, CAP_LENGTH); 
     938  //memcpy(data[8], ICQ_CAPABILITY_AIM_FILE, CAP_LENGTH); 
     939  //memcpy(data[9], ICQ_CAPABILITY_XTRAZ, CAP_LENGTH); 
     940  memcpy(data[8], ICQ_CAPABILITY_UNKNOWN1, CAP_LENGTH); 
     941  memcpy(data[9], ICQ_CAPABILITY_UNKNOWN2, CAP_LENGTH); 
     942  memcpy(data[10], ICQ_CAPABILITY_UNKNOWN3, CAP_LENGTH); 
     943  memcpy(data[11], ICQ_CAPABILITY_UNKNOWN4, CAP_LENGTH); 
     944  memcpy(data[12], ICQ_CAPABILITY_UNKNOWN5, CAP_LENGTH); 
    937945 
    938946  // Send our licq version 
    939947  data[3][12] = INT_VERSION / 1000; 
  • src/icqd.cpp

     
    24152415                                unsigned short nSequence, bool bIsAck, 
    24162416                                bool &bNewUser) 
    24172417{ 
     2418  gLog.Info("Msg Type: %d, Mask: %ld, Sequence: %d, Ack %c\nText: %s", 
     2419      nMsgType, nMask, nSequence, bIsAck? '1': '0', message); 
    24182420  char *szType = NULL; 
    24192421  CUserEvent *pEvent = NULL; 
    24202422  unsigned short nEventType = 0; 
  • src/icqd-srv.cpp

     
    29372937  { 
    29382938    gLog.Info(tr("%sReceived rights for Contact List..\n"), L_SRVxSTR); 
    29392939 
    2940     icqUpdateContactList(); 
     2940    // ICQ5.1 doesn't seem to do this anymore. 
     2941    //icqUpdateContactList(); 
    29412942    break; 
    29422943  } 
    29432944 
     
    32263227        break; 
    32273228      } 
    32283229  
     3230      // XXX Temporary workaround for the UIN being sent instead of the message 
     3231      // type when we are invisible. Needs a real fix. 
     3232      unsigned long nTmpHack; 
     3233      char szHackStr[11]; 
    32293234      advMsg >> nStatus >> nMsgFlags; 
     3235      //nTmpHack = (nMsgType << 16) & nStatus; 
     3236      nTmpHack = (nMsgType & 0x00FF) << 24 | 
     3237                 (nMsgType & 0xFF00) << 8 | 
     3238                 (nStatus & 0x00FF) << 8 | 
     3239                 (nStatus & 0xFF00) >> 8; 
     3240      snprintf(szHackStr, 11, "%ld", nTmpHack); 
    32303241 
     3242      if (strcmp(szHackStr, szId) == 0) 
     3243      { 
     3244        nMsgType = 0x0001; 
     3245      } 
     3246         
    32313247      if (nMsgType & ICQ_CMDxSUB_FxMULTIREC) 
    32323248      { 
    32333249        nMask |= ICQ_CMDxSUB_FxMULTIREC; 
     
    32663282 
    32673283      u->SetTyping(ICQ_TYPING_INACTIVEx0); 
    32683284       
     3285      // XXX Part of the hack above. If it is a messed up packet, ignore the 
     3286      // status. If not, don't touch the status here... we extracted it above. 
     3287      if (strcmp(szHackStr, szId) != 0) 
     3288        nStatus = u->Status();  
     3289 
    32693290      if (msgTxt.getTLVLen(0x0004) == 4) 
    32703291      { 
    32713292        unsigned long Ip = msgTxt.UnpackUnsignedLongTLV(0x0004);