Show
Ignore:
Timestamp:
05/01/03 09:58:19 (6 years ago)
Author:
emostar
Message:

Updated to get rid of the PROTOCOL_PLUGIN definition.
This means that this branch is unusable at the moment.

Location:
branches/protocol_plugin_1_3_0/licq/src
Files:
12 modified

Legend:

Unmodified
Added
Removed
  • branches/protocol_plugin_1_3_0/licq/src/history.cpp

    r3418 r3469  
    2121#include "licq_message.h" 
    2222#include "licq_icq.h" 
    23  
    24 #ifdef PROTOCOL_PLUGIN 
    2523#include "licq_user.h" 
     24 
     25//A sleazy hack 
    2626extern char *PPIDSTRING(unsigned long); 
    27 #endif 
    2827 
    2928#define MAX_HISTORY_MSG_SIZE 8192 
     
    4039} 
    4140 
    42 #ifdef PROTOCOL_PLUGIN 
    4341void CUserHistory::SetFile(const char *_sz, unsigned long _nUin) 
    4442{ 
     
    7977  } 
    8078} 
    81 #else 
    82 void CUserHistory::SetFile(const char *_sz, unsigned long _nUin) 
    83 { 
    84   if (m_szFileName != NULL) free(m_szFileName); 
    85   if (m_szDescription != NULL) free(m_szDescription); 
    86  
    87   // default history filename, compare only first 7 chars in case of spaces 
    88   if (strncmp(_sz, "default", 7) == 0) 
    89   { 
    90     char temp[MAX_FILENAME_LEN]; 
    91     snprintf(temp, MAX_FILENAME_LEN, "%s/%s/%ld.%s", BASE_DIR, 
    92              HISTORY_DIR, _nUin, HISTORY_EXT); 
    93     temp[sizeof(temp) - 1] = '\0'; 
    94     m_szFileName = strdup(temp); 
    95     m_szDescription = strdup("default"); 
    96   } 
    97   // no history file 
    98   else if (strncmp(_sz, "none", 4) == 0)  // no history file 
    99   { 
    100     m_szFileName = NULL; 
    101     m_szDescription = strdup("none"); 
    102   } 
    103   // use given name 
    104   else 
    105   { 
    106     m_szFileName = strdup(_sz); 
    107     m_szDescription = strdup(_sz); 
    108   } 
    109 } 
    110 #endif 
    11179 
    11280/* szResult[0] != ':' doubles to check if strlen(szResult) < 1 */ 
  • branches/protocol_plugin_1_3_0/licq/src/icqd-srv.cpp

    r3466 r3469  
    2626#include "support.h" 
    2727#include "licq_message.h" 
    28  
    29 #ifdef PROTOCOL_PLUGIN 
    3028#include "licq_protoplugind.h" 
    3129 
     
    3836    PushProtoSignal(new CAddUserSignal(_szId, _bAuthRequired), _nPPID); 
    3937} 
    40 #endif 
    4138 
    4239//-----icqAddUser---------------------------------------------------------- 
    43 #ifdef PROTOCOL_PLUGIN 
    4440void CICQDaemon::icqAddUser(const char *_szId, bool _bAuthRequired) 
    4541{ 
     
    5753  //icqUserBasicInfo(_nUin); 
    5854} 
    59 #endif 
    6055 
    6156void CICQDaemon::icqAddUser(unsigned long _nUin, bool _bAuthRequired) 
    6257{ 
    63 #ifdef PROTOCOL_PLUGIN 
    6458  char szUin[24]; 
    6559  sprintf(szUin, "%lu", _nUin); 
    6660  CSrvPacketTcp *p = new CPU_GenericUinList(szUin, ICQ_SNACxFAM_BUDDY, ICQ_SNACxBDY_ADDxTOxLIST); 
    67 #else 
    68   CSrvPacketTcp *p = new CPU_GenericUinList(_nUin, ICQ_SNACxFAM_BUDDY, ICQ_SNACxBDY_ADDxTOxLIST); 
    69 #endif 
    7061  gLog.Info("%sAlerting server to new user (#%ld)...\n", L_SRVxSTR, 
    7162             p->Sequence()); 
    72   SendExpectEvent_Server(_nUin, p, NULL); 
     63  SendExpectEvent_Server(szUin, LICQ_PPID, p, NULL); 
    7364 
    7465  // Server side list add, and update of group 
     
    292283 
    293284//-----icqRemoveUser------------------------------------------------------- 
    294 #ifdef PROTOCOL_PLUGIN 
    295285void CICQDaemon::ProtoRemoveUser(const char *_szId, unsigned long _nPPID) 
    296286{ 
     
    300290    PushProtoSignal(new CRemoveUserSignal(_szId), _nPPID); 
    301291} 
    302 #endif 
    303292 
    304293void CICQDaemon::icqRemoveUser(unsigned long _nUin) 
     
    408397 
    409398//-----icqFetchAutoResponseServer----------------------------------------------- 
    410 #ifdef PROTOCOL_PLUGIN 
    411399unsigned long CICQDaemon::ProtoFetchAutoResponseServer(const char *_szId, unsigned long _nPPID) 
    412400{ 
     
    420408  return nRet; 
    421409} 
    422 #endif 
    423410 
    424411unsigned long CICQDaemon::icqFetchAutoResponseServer(unsigned long _nUin) 
     
    548535 
    549536//-----icqSetStatus------------------------------------------------------------- 
    550 #ifdef PROTOCOL_PLUGIN 
    551537unsigned long CICQDaemon::ProtoSetStatus(unsigned long _nPPID, 
    552538                                         unsigned short _nNewStatus) 
     
    561547  return nRet; 
    562548} 
    563 #endif 
    564549 
    565550unsigned long CICQDaemon::icqSetStatus(unsigned short newStatus) 
     
    10871072 
    10881073//-----icqSendThroughServer----------------------------------------------------- 
    1089 #ifdef PROTOCOL_PLUGIN 
    10901074ICQEvent* CICQDaemon::icqSendThroughServer(const char *szId, 
    10911075  unsigned char format, char *_sMessage, CUserEvent* ue) 
     
    11221106  return result; 
    11231107} 
    1124 #endif 
    11251108 
    11261109ICQEvent* CICQDaemon::icqSendThroughServer(unsigned long nUin, unsigned char format, char *_sMessage, CUserEvent* ue) 
    11271110{ 
    1128   ICQEvent* result; 
    1129  
    1130   CPU_ThroughServer *p = new CPU_ThroughServer(nUin, format, _sMessage); 
    1131  
    1132   switch (format) 
    1133   { 
    1134     case ICQ_CMDxSUB_MSG: 
    1135             gLog.Info("%sSending message through server (#%ld).\n", L_SRVxSTR, p->Sequence()); 
    1136             break; 
    1137     case ICQ_CMDxSUB_URL: 
    1138             gLog.Info("%sSending url through server (#%ld).\n", L_SRVxSTR, p->Sequence()); 
    1139             break; 
    1140     case ICQ_CMDxSUB_CONTACTxLIST: 
    1141       gLog.Info("%sSending contact list through server (#%ld).\n", L_SRVxSTR, p->Sequence()); 
    1142             break; 
    1143         default: 
    1144             gLog.Info("%sSending misc through server (#%ld).\n", L_SRVxSTR, p->Sequence()); 
    1145   } 
    1146  
    1147   // If we are already shutting down, don't start any events 
    1148   if (m_bShuttingDown) return NULL; 
    1149  
    1150   if (ue != NULL) ue->m_eDir = D_SENDER; 
    1151   ICQEvent *e = new ICQEvent(this, m_nTCPSrvSocketDesc, p, CONNECT_SERVER, nUin, ue); 
    1152   if (e == NULL) return 0; 
    1153   e->m_NoAck = true; 
    1154  
    1155   result = SendExpectEvent(e, &ProcessRunningEvent_Server_tep); 
    1156   return result; 
     1111  char szUin[24]; 
     1112  sprintf(szUin, "%lu", nUin); 
     1113  return icqSendThroughServer(szUin, format, _sMessage, ue); 
    11571114} 
    11581115 
     
    12591216 
    12601217//-----ICQ::Logon-------------------------------------------------------------- 
    1261 #ifdef PROTOCOL_PLUGIN 
    12621218unsigned long CICQDaemon::ProtoLogon(unsigned long _nPPID, unsigned short _nLogonStatus) 
    12631219{ 
     
    12711227  return nRet; 
    12721228} 
    1273 #endif 
    12741229 
    12751230unsigned long CICQDaemon::icqLogon(unsigned short logonStatus) 
     
    13181273 
    13191274//-----ICQ::icqLogoff----------------------------------------------------------- 
    1320 #ifdef PROTOCOL_PLUGIN 
    13211275void CICQDaemon::ProtoLogoff(unsigned long _nPPID) 
    13221276{ 
     
    13261280    PushProtoSignal(new CLogoffSignal(), _nPPID); 
    13271281} 
    1328 #endif 
     1282 
    13291283void CICQDaemon::icqLogoff() 
    13301284{ 
     
    18471801  case ICQ_SNACxSUB_ONLINExLIST: 
    18481802  { 
    1849     unsigned long junk1, intIP, userPort, nUin, timestamp, nCookie; 
     1803    unsigned long junk1, intIP, userPort, timestamp, nCookie; 
    18501804    unsigned short junk2; 
    18511805    unsigned char mode; 
     
    18541808    junk1 = packet.UnpackUnsignedLongBE(); 
    18551809    junk2 = packet.UnpackUnsignedShortBE(); 
    1856 #ifdef PROTOCOL_PLUGIN 
    18571810    szId = packet.UnpackUserString(); 
    1858 #else 
    1859     nUin  = packet.UnpackUinString(); 
    1860 #endif 
    18611811 
    18621812    junk1 = packet.UnpackUnsignedLongBE(); // tlvcount 
     
    18701820//     rev_e_long(userIP); 
    18711821 
    1872 #ifdef PROTOCOL_PLUGIN 
    18731822    ICQUser *u = gUserManager.FetchUser(szId, LICQ_PPID, LOCK_W); 
    1874     delete [] szId; 
    1875 #else 
    1876     ICQUser *u = gUserManager.FetchUser(nUin, LOCK_W); 
    1877 #endif 
    18781823    if (u == NULL) 
    18791824    { 
    1880       gLog.Warn("%sUnknown user (%ld) changed status.\n", L_WARNxSTR, 
    1881                 nUin); 
     1825      gLog.Warn("%sUnknown user (%s) changed status.\n", L_WARNxSTR, 
     1826                szId); 
     1827      delete [] szId; 
    18821828      break; 
    18831829    } 
    1884  
     1830    delete [] szId; 
    18851831 
    18861832    // 0 if not set -> Online 
     
    19241870      u->SetIdleSince(0); 
    19251871 
    1926     if (packet.getTLVLen(0x000c) == 0x25) { 
     1872    if (packet.getTLVLen(0x000c) == 0x25) 
     1873    { 
    19271874      CBuffer msg = packet.UnpackTLV(0x000c); 
    19281875 
     
    19631910      { 
    19641911        ChangeUserStatus(u, nNewStatus); 
    1965         gLog.Info("%s%s (%ld) changed status: %s (v%01x)%s.\n", L_SRVxSTR, u->GetAlias(), 
    1966                   nUin, u->StatusStr(), tcpVersion & 0x0F, szExtraInfo); 
     1912        gLog.Info("%s%s (%s) changed status: %s (v%01x)%s.\n", L_SRVxSTR, u->GetAlias(), 
     1913                  u->IdString(), u->StatusStr(), tcpVersion & 0x0F, szExtraInfo); 
    19671914        if ( (nNewStatus & ICQ_STATUS_FxUNKNOWNxFLAGS) ) 
    1968           gLog.Unknown("%sUnknown status flag for %s (%ld): 0x%08lX\n", 
    1969                        L_UNKNOWNxSTR, u->GetAlias(), nUin, (nNewStatus & ICQ_STATUS_FxUNKNOWNxFLAGS)); 
     1915          gLog.Unknown("%sUnknown status flag for %s (%s): 0x%08lX\n", 
     1916                       L_UNKNOWNxSTR, u->GetAlias(), u->IdString(), 
     1917                       (nNewStatus & ICQ_STATUS_FxUNKNOWNxFLAGS)); 
    19701918        nNewStatus &= ICQ_STATUS_FxUNKNOWNxFLAGS; 
    19711919        u->SetAutoResponse(NULL); 
     
    19931941      if (mode != MODE_DIRECT && mode != MODE_INDIRECT) 
    19941942      { 
    1995         gLog.Unknown("%sUnknown peer-to-peer mode for %s (%ld): %d\n", L_UNKNOWNxSTR, 
    1996                      u->GetAlias(), u->Uin(), mode); 
     1943        gLog.Unknown("%sUnknown peer-to-peer mode for %s (%s): %d\n", L_UNKNOWNxSTR, 
     1944                     u->GetAlias(), u->IdString(), mode); 
    19971945        u->SetMode(MODE_DIRECT); 
    19981946        u->SetSendServer(false); 
     
    20041952      } 
    20051953    } 
    2006 #ifdef PROTOCOL_PLUGIN 
    20071954    else // for AIM users 
    20081955    { 
     
    20101957      { 
    20111958        ChangeUserStatus(u, nNewStatus); 
    2012         gLog.Info("%s%s (%s) changed status: %s (AIM).\n", L_SRVxSTR, u->GetAlias(), 
    2013                   u->IdString(), u->StatusStr()); 
     1959        gLog.Info("%s%s changed status: %s (AIM).\n", L_SRVxSTR, u->GetAlias(), 
     1960                  u->StatusStr()); 
    20141961        if ( (nNewStatus & ICQ_STATUS_FxUNKNOWNxFLAGS) ) 
    2015           gLog.Unknown("%sUnknown status flag for %s (%s): 0x%08lX\n", 
    2016                        L_UNKNOWNxSTR, u->GetAlias(), u->IdString(), 
     1962          gLog.Unknown("%sUnknown status flag for %s: 0x%08lX\n", 
     1963                       L_UNKNOWNxSTR, u->GetAlias(), 
    20171964                       nNewStatus & ICQ_STATUS_FxUNKNOWNxFLAGS); 
    20181965        u->SetAutoResponse(NULL); 
     
    20201967      } 
    20211968    } 
    2022 #endif 
    20231969 
    20241970    // We are no longer able to differentiate oncoming users from the 
     
    20321978  case ICQ_SNACxSUB_OFFLINExLIST: 
    20331979  { 
    2034     unsigned long junk1, nUin; 
     1980    unsigned long junk1; 
    20351981    unsigned short junk2; 
     1982    char *szId; 
    20361983 
    20371984    junk1 = packet.UnpackUnsignedLongBE(); 
    20381985    junk2 = packet.UnpackUnsignedShortBE(); 
    2039  
    2040     nUin = packet.UnpackUinString(); 
    2041  
    2042     ICQUser *u = gUserManager.FetchUser(nUin, LOCK_W); 
     1986    szId = packet.UnpackUserString(); 
     1987 
     1988    ICQUser *u = gUserManager.FetchUser(szId, LICQ_PPID, LOCK_W); 
    20431989    if (u == NULL) 
    20441990    { 
    2045       gLog.Warn("%sUnknown user (%ld) has gone offline.\n", L_WARNxSTR, nUin); 
     1991      gLog.Warn("%sUnknown user (%s) has gone offline.\n", L_WARNxSTR, szId); 
     1992      delete [] szId; 
    20461993      break; 
    20471994    } 
    2048     gLog.Info("%s%s (%ld) went offline.\n", L_SRVxSTR, u->GetAlias(), nUin); 
     1995    delete [] szId; 
     1996 
     1997    gLog.Info("%s%s went offline.\n", L_SRVxSTR, u->GetAlias()); 
    20491998    u->SetClientTimestamp(0); 
    20501999    ChangeUserStatus(u, ICQ_STATUS_OFFLINE); 
     
    21142063    nTimeSent   = time(0L); 
    21152064    mFormat    = packet.UnpackUnsignedShortBE(); 
    2116 #ifdef PROTOCOL_PLUGIN 
    21172065    szId       = packet.UnpackUserString(); 
    2118 #else 
    2119     nUin       = packet.UnpackUinString(); 
    2120  
    2121     if (nUin < 10000 && nUin != ICQ_UINxPAGER && nUin != ICQ_UINxSMS) 
    2122     { 
    2123       gLog.Warn("%sMessage through server with strange Uin: %04lx\n", L_WARNxSTR, nUin); 
    2124       break; 
    2125     } 
    2126 #endif 
     2066 
     2067    //TODO Check this again with new protocol plugin support 
     2068    //if (nUin < 10000 && nUin != ICQ_UINxPAGER && nUin != ICQ_UINxSMS) 
     2069    //{ 
     2070    //  gLog.Warn("%sMessage through server with strange Uin: %04lx\n", L_WARNxSTR, nUin); 
     2071    //  break; 
     2072    //} 
    21272073 
    21282074    packet.UnpackUnsignedShortBE();  // warning level ? 
     
    21742120 
    21752121      // Lock the user to add the message to their queue 
    2176 #ifdef PROTOCOL_PLUGIN 
    21772122      ICQUser *u = gUserManager.FetchUser(szId, LICQ_PPID, LOCK_W); 
    2178 #else 
    2179       ICQUser* u = gUserManager.FetchUser(nUin, LOCK_W); 
    2180 #endif 
    21812123      if (u == NULL) 
    21822124      { 
    21832125        if (Ignore(IGNORE_NEWUSERS)) 
    21842126        { 
    2185           gLog.Info("%sMessage from new user (%ld), ignoring.\n", L_SBLANKxSTR, nUin); 
    2186           RejectEvent(nUin, e); 
     2127          gLog.Info("%sMessage from new user (%s), ignoring.\n", L_SBLANKxSTR, szId); 
     2128          //TODO 
     2129          RejectEvent(strtoul(szId, (char **)NULL, 10), e); 
    21872130          break; 
    21882131        } 
    2189         gLog.Info("%sMessage from new user (%ld).\n", 
    2190                   L_SBLANKxSTR, nUin); 
    2191 #ifdef PROTOCOL_PLUGIN 
     2132        gLog.Info("%sMessage from new user (%s).\n", 
     2133                  L_SBLANKxSTR, szId); 
     2134 
    21922135        AddUserToList(szId, LICQ_PPID); 
    21932136        u = gUserManager.FetchUser(szId, LICQ_PPID, LOCK_W); 
    2194 #else 
    2195  
    2196         AddUserToList(nUin); 
    2197         u = gUserManager.FetchUser(nUin, LOCK_W); 
    2198 #endif 
    21992137      } 
    22002138      else 
    2201 #ifdef PROTOCOL_PLUGIN 
    22022139        gLog.Info("%sMessage through server from %s (%s).\n", L_SRVxSTR, 
    22032140          u->GetAlias(), szId); 
    2204 #else 
    2205         gLog.Info("%sMessage through server from %s (%ld).\n", L_SRVxSTR, 
    2206                   u->GetAlias(), nUin); 
    2207 #endif 
    2208  
    2209 #ifdef PROTOCOL_PLUGIN 
    2210       if (szId) 
    2211         delete [] szId; 
    2212 #endif 
    22132141 
    22142142      if (AddUserEvent(u, e)) 
     
    22802208 
    22812209      bool bNewUser = false; 
    2282 #ifdef PROTOCOL_PLUGIN 
    22832210      ICQUser *u = gUserManager.FetchUser(szId, LICQ_PPID, LOCK_W); 
    2284 #else 
    2285       ICQUser *u = gUserManager.FetchUser(nUin, LOCK_W); 
    2286 #endif 
    22872211      if (u == NULL) 
    22882212      { 
    2289 #ifdef PROTOCOL_PLUGIN 
    22902213        u = new ICQUser(szId, LICQ_PPID); 
    2291 #else 
    2292         u = new ICQUser(nUin); 
    2293 #endif 
    22942214        bNewUser = true; 
    22952215      } 
    2296 #ifdef PROTOCOL_PLUGIN 
    2297       if (szId) 
    2298         delete [] szId; 
    2299 #endif 
    23002216 
    23012217      if (msgTxt.getTLVLen(0x0004) == 4) 
     
    23132229        bool r = u->OfflineOnDisconnect() || u->StatusOffline(); 
    23142230        ChangeUserStatus(u, (u->StatusFull() & ICQ_STATUS_FxFLAGS) | nStatus); 
    2315         gLog.Info("%s%s (%ld) is %s to us.\n", L_TCPxSTR, u->GetAlias(), 
    2316           u->Uin(), u->StatusStr()); 
     2231        gLog.Info("%s%s (%s) is %s to us.\n", L_TCPxSTR, u->GetAlias(), 
     2232          u->IdString(), u->StatusStr()); 
    23172233        if (r) u->SetOfflineOnDisconnect(true); 
    23182234      } 
     
    23492265        unsigned short nTypeSMS = msgTxt.UnpackUnsignedShort(); 
    23502266        switch (nTypeSMS) 
    2351     { 
     2267        { 
    23522268          case 0x0000: 
    2353         // SMS 
    2354         break; 
    2355       case 0x0002: 
    2356         // SMS Receipt: Success (meanwhile, we handle it in a rather lame way) 
    2357         gLog.Unknown("%sReceived SMS receipt indicating success.\n", L_UNKNOWNxSTR); 
    2358         return; 
    2359       case 0x0003: 
    2360         // SMS Receipt : Failure 
    2361         gLog.Unknown("%sReceived SMS receipt indicating failure.\n", L_UNKNOWNxSTR); 
    2362         return; 
    2363       default: 
    2364         char *buf; 
    2365         gLog.Unknown("%sUnknown SMS subtype (0x%04x):\n%s\n", L_UNKNOWNxSTR, nTypeSMS, packet.print(buf)); 
    2366         delete [] buf; 
    2367         return; 
    2368         } 
    2369  
    2370     unsigned long nTagLength = msgTxt.UnpackUnsignedLong(); 
    2371     // Refuse irreasonable tag sizes 
    2372     if (nTagLength > 255) 
    2373     { 
    2374       gLog.Unknown("%sInvalid tag in SMS message.", L_UNKNOWNxSTR); 
    2375       return; 
    2376     } 
    2377  
    2378     char* szTag = new char[nTagLength + 1]; 
    2379     for (unsigned long i = 0; i < nTagLength; ++i) 
    2380       szTag[i] = msgTxt.UnpackChar(); 
    2381     szTag[nTagLength] = '\0'; 
    2382  
    2383     if (strcmp(szTag, "ICQSMS") != 0) 
    2384     { 
    2385           gLog.Unknown("%sUnknown tag in SMS message:\n%s\n", L_UNKNOWNxSTR, szTag); 
     2269              // SMS 
     2270              break; 
     2271          case 0x0002: 
     2272            // SMS Receipt: Success (meanwhile, we handle it in a rather lame way) 
     2273            gLog.Unknown("%sReceived SMS receipt indicating success.\n", L_UNKNOWNxSTR); 
     2274            return; 
     2275          case 0x0003: 
     2276            // SMS Receipt : Failure 
     2277            gLog.Unknown("%sReceived SMS receipt indicating failure.\n", L_UNKNOWNxSTR); 
     2278            return; 
     2279          default: 
     2280          { 
     2281            char *buf; 
     2282            gLog.Unknown("%sUnknown SMS subtype (0x%04x):\n%s\n", L_UNKNOWNxSTR, 
     2283              nTypeSMS, packet.print(buf)); 
     2284            delete [] buf; 
     2285            return; 
     2286          } 
     2287        } 
     2288 
     2289        unsigned long nTagLength = msgTxt.UnpackUnsignedLong(); 
     2290        // Refuse irreasonable tag sizes 
     2291        if (nTagLength > 255) 
     2292        { 
     2293          gLog.Unknown("%sInvalid tag in SMS message.", L_UNKNOWNxSTR); 
     2294          return; 
     2295        } 
     2296 
     2297        char* szTag = new char[nTagLength + 1]; 
     2298        for (unsigned long i = 0; i < nTagLength; ++i) 
     2299          szTag[i] = msgTxt.UnpackChar(); 
     2300        szTag[nTagLength] = '\0'; 
     2301 
     2302        if (strcmp(szTag, "ICQSMS") != 0) 
     2303        { 
     2304          gLog.Unknown("%sUnknown tag in SMS message:\n%s\n", L_UNKNOWNxSTR, 
     2305            szTag); 
    23862306          delete [] szTag; 
    23872307          return; 
     
    23952315        // Refuse irreasonable SMS sizes (something must've went wrong) 
    23962316        if (nSMSLength > 0x7fff) 
    2397     { 
    2398           gLog.Unknown("%sSMS message packet was too large (claimed size: %lu bytes)\n", L_UNKNOWNxSTR, nSMSLength); 
     2317        { 
     2318          gLog.Unknown("%sSMS message packet was too large (claimed size: %lu bytes)\n", 
     2319            L_UNKNOWNxSTR, nSMSLength); 
    23992320          return; 
    24002321        } 
     
    24202341      unsigned short nTypeEvent = 0; 
    24212342      CUserEvent *eEvent = NULL; 
    2422        
     2343 
    24232344      switch(nTypeMsg) 
    24242345      { 
    2425     case ICQ_CMDxSUB_MSG: 
    2426     { 
    2427       CEventMsg *e = CEventMsg::Parse(szMessage, ICQ_CMDxRCV_SYSxMSGxONLINE, nTimeSent, nMask); 
    2428       szType = strdup("Message"); 
    2429       nTypeEvent = ON_EVENT_MSG; 
    2430       eEvent = e; 
    2431     break; 
    2432     } 
    2433     case ICQ_CMDxSUB_URL: 
    2434     { 
    2435       CEventUrl *e = CEventUrl::Parse(szMessage, ICQ_CMDxRCV_SYSxMSGxONLINE, nTimeSent, nMask); 
    2436       if (e == NULL) 
    2437       { 
    2438         char *buf; 
    2439  
    2440         gLog.Warn("%sInvalid URL message:\n%s\n", L_WARNxSTR, packet.print(buf)); 
    2441         delete [] buf; 
    2442         break; 
    2443       } 
    2444       szType = strdup("URL"); 
    2445       nTypeEvent = ON_EVENT_URL; 
    2446       eEvent = e; 
    2447       break; 
    2448     } 
    2449     case ICQ_CMDxSUB_AUTHxREQUEST: 
    2450     { 
    2451       gLog.Info("%sAuthorization request from %ld.\n", L_SBLANKxSTR, nUin); 
    2452  
    2453       char **szFields = new char *[6];  // alias, first name, last name, email, auth, comment 
    2454   
    2455       if (!ParseFE(szMessage, &szFields, 6)) 
    2456       { 
    2457         char *buf; 
    2458  
    2459         gLog.Warn("%sInvalid authorization request system message:\n%s\n", L_WARNxSTR, 
     2346        case ICQ_CMDxSUB_MSG: 
     2347        { 
     2348          CEventMsg *e = CEventMsg::Parse(szMessage, ICQ_CMDxRCV_SYSxMSGxONLINE, nTimeSent, nMask); 
     2349          szType = strdup("Message"); 
     2350          nTypeEvent = ON_EVENT_MSG; 
     2351          eEvent = e; 
     2352          break; 
     2353        } 
     2354        case ICQ_CMDxSUB_URL: 
     2355        { 
     2356          CEventUrl *e = CEventUrl::Parse(szMessage, ICQ_CMDxRCV_SYSxMSGxONLINE, nTimeSent, nMask); 
     2357          if (e == NULL) 
     2358          { 
     2359            char *buf; 
     2360            gLog.Warn("%sInvalid URL message:\n%s\n", L_WARNxSTR, packet.print(buf)); 
     2361            delete [] buf; 
     2362            break; 
     2363          } 
     2364          szType = strdup("URL"); 
     2365          nTypeEvent = ON_EVENT_URL; 
     2366          eEvent = e; 
     2367          break; 
     2368        } 
     2369        case ICQ_CMDxSUB_AUTHxREQUEST: 
     2370        { 
     2371          gLog.Info("%sAuthorization request from %s.\n", L_SBLANKxSTR, szId); 
     2372          char **szFields = new char *[6];  // alias, first name, last name, email, auth, comment 
     2373 
     2374          if (!ParseFE(szMessage, &szFields, 6)) 
     2375          { 
     2376            char *buf; 
     2377            gLog.Warn("%sInvalid authorization request system message:\n%s\n", L_WARNxSTR, 
    24602378                                    packet.print(buf)); 
    2461  
    2462         delete [] buf; 
    2463         delete [] szFields; 
    2464         break; 
    2465       } 
    2466  
    2467       // translating string with Translation Table 
    2468       gTranslator.ServerToClient (szFields[0]);  // alias 
    2469       gTranslator.ServerToClient (szFields[1]);  // first name 
    2470       gTranslator.ServerToClient (szFields[2]);  // last name 
    2471       gTranslator.ServerToClient (szFields[5]);  // comment 
    2472  
    2473       CEventAuthRequest *e = new CEventAuthRequest(nUin, szFields[0], 
     2379            delete [] buf; 
     2380            delete [] szFields; 
     2381            break; 
     2382          } 
     2383 
     2384          // translating string with Translation Table 
     2385          gTranslator.ServerToClient (szFields[0]);  // alias 
     2386          gTranslator.ServerToClient (szFields[1]);  // first name 
     2387    &n