Changeset 6382
- Timestamp:
- 07/01/08 18:58:01 (3 months ago)
- Location:
- trunk/licq
- Files:
-
- 14 modified
-
include/licq_user.h (modified) (4 diffs)
-
src/fifo.cpp (modified) (8 diffs)
-
src/icqd-chat.cpp (modified) (6 diffs)
-
src/icqd-srv.cpp (modified) (51 diffs)
-
src/icqd-tcp.cpp (modified) (10 diffs)
-
src/icqd-threads.cpp (modified) (2 diffs)
-
src/icqd-udp.cpp (modified) (34 diffs)
-
src/icqd.cpp (modified) (4 diffs)
-
src/icqpacket.cpp (modified) (68 diffs)
-
src/Makefile.am (modified) (1 diff)
-
src/message.cpp (modified) (1 diff)
-
src/onevent.cpp (modified) (1 diff)
-
src/oscarservice.cpp (modified) (1 diff)
-
src/user.cpp (modified) (5 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/licq/include/licq_user.h
r6370 r6382 1255 1255 ~CUserManager(); 1256 1256 bool Load(); 1257 void SetOwnerUin(unsigned long _nUin);1258 1257 1259 1258 // For protocol plugins … … 1264 1263 ICQUser *FetchUser(const char *, unsigned long, unsigned short); 1265 1264 ICQOwner *FetchOwner(unsigned long, unsigned short); 1266 void DropOwner(unsigned long);1267 1265 1268 1266 /** … … 1287 1285 ICQUser *FetchUser(unsigned long, unsigned short); 1288 1286 void DropUser(ICQUser *); 1289 ICQOwner *FetchOwner(unsigned short);1290 void DropOwner();1291 unsigned long OwnerUin() {return m_nOwnerUin; }1292 1287 bool IsOnList(unsigned long nUin); 1288 1289 // Deprecated owner functions, to be removed 1290 void SetOwnerUin(unsigned long _nUin) __attribute__ ((deprecated)); 1291 unsigned long OwnerUin() __attribute__ ((deprecated)) { return icqOwnerUin(); } 1292 ICQOwner *FetchOwner(unsigned short) __attribute__ ((deprecated)); 1293 void DropOwner() __attribute__ ((deprecated)); 1294 void DropOwner(unsigned long) __attribute__ ((deprecated)); 1295 1296 /** 1297 * Convenience function to get icq owner as an unsigned long 1298 * Only meant to be used internally for icq protocol functions 1299 * 1300 * @return Icq owner 1301 */ 1302 unsigned long icqOwnerUin(); 1293 1303 1294 1304 /** … … 1502 1512 OwnerList m_vpcOwners; 1503 1513 ICQOwner *m_xOwner; 1504 unsigned long m_nOwnerUin;1505 1514 unsigned short m_nUserListLockType; 1506 1515 unsigned short myGroupListLockType; -
trunk/licq/src/fifo.cpp
r6306 r6382 154 154 StringToStatus(char *_szStatus) 155 155 { 156 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);156 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 157 157 unsigned long nStatus = o->AddStatusFlags(0); 158 158 int i =0; … … 172 172 { NULL, 0 } 173 173 }; 174 gUserManager.DropOwner( );174 gUserManager.DropOwner(o); 175 175 if (_szStatus[0] == '*') 176 176 { … … 335 335 static int fifo_status( int argc, const char *const *argv, void *data) 336 336 { 337 ICQOwner *o;338 337 CICQDaemon *d= (CICQDaemon *) data; 339 338 const char *szStatus = argv[1]; … … 348 347 349 348 // Determine the status to go to 350 o = gUserManager.FetchOwner(LOCK_R);349 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 351 350 bOffline = o->StatusOffline(); 352 gUserManager.DropOwner( );351 gUserManager.DropOwner(o); 353 352 nStatus = StringToStatus(const_cast<char *>(szStatus)); 354 353 … … 374 373 if( argc > 2 ) 375 374 { 376 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);375 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 377 376 o->SetAutoResponse(argv[2]); 378 gUserManager.DropOwner( );377 gUserManager.DropOwner(o); 379 378 } 380 379 … … 386 385 static int fifo_auto_response( int argc, const char *const *argv, void* /* data */) 387 386 { 388 ICQOwner *o;389 390 387 if( argc == 1 ) 391 388 { … … 394 391 } 395 392 396 o = gUserManager.FetchOwner(LOCK_W);393 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 397 394 o->SetAutoResponse(argv[1]); 398 gUserManager.DropOwner( );395 gUserManager.DropOwner(o); 399 396 400 397 return 0; … … 504 501 } 505 502 506 ICQ User *owner = gUserManager.FetchOwner(LOCK_R);503 ICQOwner* owner = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 507 504 d->icqSendSms(argv[1], argv[2], owner->Uin()); 508 gUserManager.DropOwner( );505 gUserManager.DropOwner(owner); 509 506 return 0; 510 507 } -
trunk/licq/src/icqd-chat.cpp
r6164 r6382 49 49 m_szName = NULL; 50 50 m_nPort = _nLocalPort; 51 m_nUin = gUserManager.OwnerUin(); 52 char szUin[24]; 53 sprintf(szUin, "%lu", m_nUin); 54 m_szId = strdup(szUin); 51 m_szId = strdup(gUserManager.OwnerId(LICQ_PPID).c_str()); 52 m_nUin = atol(m_szId); 55 53 m_nPPID = LICQ_PPID; 56 54 m_nColorForeRed = nColorForeRed; … … 66 64 buffer->PackUnsignedLong(0x65); 67 65 buffer->PackUnsignedLong(-ICQ_VERSION_TCP); 68 buffer->PackUnsignedLong( gUserManager.OwnerUin());66 buffer->PackUnsignedLong(m_nUin); 69 67 buffer->PackString(_sLocalName); 70 68 buffer->PackUnsignedShort(ReversePort(_nLocalPort)); … … 305 303 m_szName = NULL; 306 304 m_nPort = nLocalPort; 307 m_nUin = gUserManager.OwnerUin(); 308 char szUin[24]; 309 sprintf(szUin, "%lu", m_nUin); 310 m_szId = strdup(szUin); 305 m_szId = strdup(gUserManager.OwnerId(LICQ_PPID).c_str()); 306 m_nUin = atol(m_szId); 311 307 m_nPPID = LICQ_PPID; 312 308 m_nColorForeRed = nColorForeRed; … … 332 328 333 329 buffer->PackUnsignedLong(0x65); 334 buffer->PackUnsignedLong( gUserManager.OwnerUin());330 buffer->PackUnsignedLong(m_nUin); 335 331 buffer->PackString(szLocalName); 336 332 buffer->PackChar(nColorForeRed); … … 688 684 licqDaemon = d; 689 685 690 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);686 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 691 687 strncpy(m_szName, o->GetAlias(), 32); 692 688 m_szName[31] = '\0'; 693 689 m_nSession = o->Port(); 694 gUserManager.DropOwner( );690 gUserManager.DropOwner(o); 695 691 696 692 m_nFontFace = FONT_PLAIN; … … 813 809 if (!bSuccess) 814 810 { 815 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);811 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 816 812 unsigned long nIp = bSendIntIp ? o->IntIp() : o->Ip(); 817 gUserManager.DropOwner( );818 813 gUserManager.DropOwner(o); 814 819 815 // try reverse connect 820 816 int nId = licqDaemon->RequestReverseConnection(c->m_nUin, c->m_nSession, -
trunk/licq/src/icqd-srv.cpp
r6357 r6382 500 500 void CICQDaemon::icqAlertUser(const char* id, unsigned long ppid) 501 501 { 502 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);502 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 503 503 char sz[MAX_MESSAGE_SIZE]; 504 504 sprintf(sz, "%s%c%s%c%s%c%s%c%c%c", o->GetAlias(), 0xFE, o->GetFirstName(), 505 505 0xFE, o->GetLastName(), 0xFE, o->GetEmailPrimary(), 0xFE, 506 506 o->GetAuthorization() ? '0' : '1', 0xFE); 507 gUserManager.DropOwner( );507 gUserManager.DropOwner(o); 508 508 CPU_ThroughServer *p = new CPU_ThroughServer(id, ICQ_CMDxSUB_ADDEDxTOxLIST, sz); 509 509 gLog.Info(tr("%sAlerting user they were added (#%hu)...\n"), L_SRVxSTR, p->Sequence()); … … 659 659 if (m_eStatus == STATUS_ONLINE) 660 660 { 661 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);661 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 662 662 status = o->StatusFull(); 663 gUserManager.DropOwner( );663 gUserManager.DropOwner(o); 664 664 } 665 665 else … … 783 783 bool isLogon = o->StatusOffline(); 784 784 int nPDINFO = o->GetPDINFO(); 785 gUserManager.DropOwner( LICQ_PPID);785 gUserManager.DropOwner(o); 786 786 787 787 if (nPDINFO == 0) 788 788 { 789 789 icqCreatePDINFO(); 790 790 791 791 o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 792 792 nPDINFO = o->GetPDINFO(); 793 gUserManager.DropOwner( LICQ_PPID);794 } 795 793 gUserManager.DropOwner(o); 794 } 795 796 796 if (goInvisible) 797 797 { … … 1077 1077 // Since ICQ5.1, the status change packet is sent first, which means it is 1078 1078 // assumed that the set security info packet works. 1079 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);1079 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 1080 1080 o->SetEnableSave(false); 1081 1081 o->SetAuthorization(bAuthorize); … … 1085 1085 o->SaveLicqInfo(); 1086 1086 unsigned short s = o->StatusFull(); 1087 gUserManager.DropOwner( );1087 gUserManager.DropOwner(o); 1088 1088 // Set status to ensure the status flags are set 1089 1089 icqSetStatus(s); … … 1180 1180 o->SetClientInfoTimestamp(time(NULL)); 1181 1181 bool bOffline = o->StatusOffline(); 1182 gUserManager.DropOwner( );1182 gUserManager.DropOwner(o); 1183 1183 1184 1184 if (!bOffline) … … 1192 1192 o->SetClientInfoTimestamp(time(NULL)); 1193 1193 bool bOffline = o->StatusOffline(); 1194 gUserManager.DropOwner( );1194 gUserManager.DropOwner(o); 1195 1195 1196 1196 if (!bOffline) … … 1205 1205 o->SetPhoneFollowMeStatus(nNewStatus); 1206 1206 bool bOffline = o->StatusOffline(); 1207 gUserManager.DropOwner( );1207 gUserManager.DropOwner(o); 1208 1208 1209 1209 if (!bOffline) … … 1851 1851 if (o->IdString() == 0) 1852 1852 { 1853 gUserManager.DropOwner( );1853 gUserManager.DropOwner(o); 1854 1854 gLog.Error("%sNo registered user, unable to process logon attempt.\n", L_ERRORxSTR); 1855 1855 return 0; … … 1857 1857 if (o->Password()[0] == '\0') 1858 1858 { 1859 gUserManager.DropOwner( );1859 gUserManager.DropOwner(o); 1860 1860 gLog.Error(tr("%sNo password set. Edit ~/.licq/owner.Licq and fill in the password field.\n"), L_ERRORxSTR); 1861 1861 return 0; … … 1863 1863 1864 1864 m_nDesiredStatus = o->AddStatusFlags(logonStatus); 1865 gUserManager.DropOwner( );1865 gUserManager.DropOwner(o); 1866 1866 1867 1867 CPU_ConnectStart *startPacket = new CPU_ConnectStart(); … … 1883 1883 ICQOwner *o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 1884 1884 CPU_RequestLogonSalt *p = new CPU_RequestLogonSalt(o->IdString()); 1885 gUserManager.DropOwner( );1885 gUserManager.DropOwner(o); 1886 1886 gLog.Info(tr("%sRequesting logon salt (#%hu)...\n"), L_SRVxSTR, p->Sequence()); 1887 1887 SendEvent_Server(p); … … 2028 2028 #endif 2029 2029 2030 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);2030 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 2031 2031 if (o) 2032 2032 ChangeUserStatus(o, ICQ_STATUS_OFFLINE); 2033 gUserManager.DropOwner( );2033 gUserManager.DropOwner(o); 2034 2034 2035 2035 if (m_szRegisterPasswd) … … 2083 2083 int CICQDaemon::ConnectToServer(const char* server, unsigned short port) 2084 2084 { 2085 SrvSocket *s = new SrvSocket(gUserManager. OwnerUin());2085 SrvSocket *s = new SrvSocket(gUserManager.icqOwnerUin()); 2086 2086 2087 2087 if (m_bProxyEnabled) … … 2119 2119 // Now get the internal ip from this socket 2120 2120 CPacket::SetLocalIp( NetworkIpToPacketIp(s->LocalIp() )); 2121 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);2121 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 2122 2122 if (o) 2123 2123 o->SetIntIp(s->LocalIp()); 2124 gUserManager.DropOwner( );2124 gUserManager.DropOwner(o); 2125 2125 2126 2126 gSocketManager.AddSocket(s); … … 2364 2364 // ICQOwner *o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 2365 2365 // unsigned long nListTime = o->GetSSTime(); 2366 // gUserManager.DropOwner( LICQ_PPID);2366 // gUserManager.DropOwner(o); 2367 2367 2368 2368 CSrvPacketTcp* p; … … 2457 2457 realIP = PacketIpToNetworkIp(realIP); 2458 2458 CPacket::SetRealIp(NetworkIpToPacketIp(realIP)); 2459 ICQOwner *owner = gUserManager.FetchOwner(LOCK_W);2459 ICQOwner* owner = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 2460 2460 owner->SetIp(realIP); 2461 gUserManager.DropOwner( );2461 gUserManager.DropOwner(owner); 2462 2462 2463 2463 char buf[32]; … … 2468 2468 nOnlineSince = packet.UnpackUnsignedLongTLV(0x0003); 2469 2469 2470 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);2470 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 2471 2471 unsigned long nPFM = o->PhoneFollowMeStatus(); 2472 2472 // Workaround for the ICQ4.0 problem of it not liking the PFM flags … … 2480 2480 gLog.Info(tr("%sServer says we're now: %s\n"), L_SRVxSTR, ICQUser::StatusToStatusStr(o->Status(), o->StatusInvisible())); 2481 2481 2482 gUserManager.DropOwner( );2482 gUserManager.DropOwner(o); 2483 2483 2484 2484 break; … … 3776 3776 ICQOwner *o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 3777 3777 AddUserEvent(o, e); 3778 gUserManager.DropOwner( );3778 gUserManager.DropOwner(o); 3779 3779 } 3780 3780 } … … 3841 3841 if (AddUserEvent(o, eEvent)) 3842 3842 { 3843 gUserManager.DropOwner( LICQ_PPID);3843 gUserManager.DropOwner(o); 3844 3844 eEvent->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 3845 3845 m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL); 3846 3846 } 3847 3847 else 3848 gUserManager.DropOwner( LICQ_PPID);3848 gUserManager.DropOwner(o); 3849 3849 break; 3850 3850 } … … 3871 3871 if (AddUserEvent(o, eEvent)) 3872 3872 { 3873 gUserManager.DropOwner( );3873 gUserManager.DropOwner(o); 3874 3874 eEvent->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 3875 3875 m_xOnEventManager.Do(ON_EVENT_SMS, NULL); 3876 3876 } 3877 3877 else 3878 gUserManager.DropOwner( );3878 gUserManager.DropOwner(o); 3879 3879 } 3880 3880 break; … … 4349 4349 if (cPrivacySettings == ICQ_PRIVACY_ALLOW_FOLLOWING) 4350 4350 ChangeUserStatus(o, o->StatusFull() | ICQ_STATUS_FxPRIVATE); 4351 gUserManager.DropOwner( LICQ_PPID);4351 gUserManager.DropOwner(o); 4352 4352 break; 4353 4353 } … … 4367 4367 CheckExport(); 4368 4368 } 4369 4369 4370 4370 // Update local info about contact list 4371 4371 nTime = packet.UnpackUnsignedLongBE(); 4372 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);4372 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 4373 4373 o->SetSSTime(nTime); 4374 4374 o->SetSSCount(nCount); 4375 gUserManager.DropOwner( );4375 gUserManager.DropOwner(o); 4376 4376 4377 4377 gLog.Info(tr("%sActivate server contact list.\n"), L_SRVxSTR); … … 4465 4465 unsigned long nListTime = o->GetSSTime(); 4466 4466 o->SetSSTime(time(0)); 4467 gUserManager.DropOwner( LICQ_PPID);4467 gUserManager.DropOwner(o); 4468 4468 4469 4469 CSrvPacketTcp *pReply = 0; … … 4644 4644 if (AddUserEvent(o, e)) 4645 4645 { 4646 gUserManager.DropOwner( LICQ_PPID);4646 gUserManager.DropOwner(o); 4647 4647 e->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 4648 4648 m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL); 4649 4649 } 4650 4650 else 4651 gUserManager.DropOwner( LICQ_PPID);4652 4651 gUserManager.DropOwner(o); 4652 4653 4653 delete [] szId; 4654 4654 delete [] szMsg; … … 4695 4695 if (AddUserEvent(o, eEvent)) 4696 4696 { 4697 gUserManager.DropOwner( LICQ_PPID);4697 gUserManager.DropOwner(o); 4698 4698 eEvent->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 4699 4699 m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL); 4700 4700 } 4701 4701 else 4702 gUserManager.DropOwner( LICQ_PPID);4702 gUserManager.DropOwner(o); 4703 4703 4704 4704 delete [] szId; … … 4718 4718 if (AddUserEvent(o, e)) 4719 4719 { 4720 gUserManager.DropOwner( LICQ_PPID);4720 gUserManager.DropOwner(o); 4721 4721 e->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 4722 4722 m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL); 4723 4723 } 4724 4724 else 4725 gUserManager.DropOwner( LICQ_PPID);4725 gUserManager.DropOwner(o); 4726 4726 4727 4727 delete [] szId; … … 4831 4831 sendTM.tm_isdst = -1; 4832 4832 4833 ICQOwner *o = gUserManager.FetchOwner(LOCK_R);4833 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_R); 4834 4834 nTimeSent = mktime(&sendTM) - o->SystemTimeGMTOffset(); 4835 gUserManager.DropOwner();4836 4835 gUserManager.DropOwner(o); 4836 4837 4837 // Msg type & flags 4838 4838 unsigned short nTypeMsg = msg.UnpackUnsignedShort(); … … 5079 5079 CEventUnknownSysMsg *e = new CEventUnknownSysMsg(nTypeMsg, ICQ_CMDxRCV_SYSxMSGxOFFLINE, 5080 5080 nUin, szMessage, nTimeSent, 0); 5081 5082 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5081 5082 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5083 5083 AddUserEvent(o, e); 5084 gUserManager.DropOwner();5084 gUserManager.DropOwner(o); 5085 5085 } 5086 5086 } … … 5141 5141 } 5142 5142 5143 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5143 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5144 5144 if (AddUserEvent(o, eEvent)) 5145 5145 { 5146 gUserManager.DropOwner();5146 gUserManager.DropOwner(o); 5147 5147 eEvent->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 5148 5148 m_xOnEventManager.Do(ON_EVENT_SYSMSG, NULL); 5149 5149 } 5150 5150 else 5151 gUserManager.DropOwner();5151 gUserManager.DropOwner(o); 5152 5152 break; 5153 5153 } … … 5166 5166 } 5167 5167 else 5168 { 5169 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5168 { 5169 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5170 5170 gLog.Info(tr("%sOffline SMS from %s.\n"), L_BLANKxSTR, eSms->Number()); 5171 5171 if (AddUserEvent(o, eEvent)) 5172 5172 { 5173 gUserManager.DropOwner();5173 gUserManager.DropOwner(o); 5174 5174 eEvent->AddToHistory(NULL, LICQ_PPID, D_RECEIVER); 5175 5175 m_xOnEventManager.Do(ON_EVENT_SMS, NULL); 5176 5176 } 5177 5177 else 5178 gUserManager.DropOwner();5179 }5178 gUserManager.DropOwner(o); 5179 } 5180 5180 break; 5181 5181 } … … 5210 5210 if (pEvent != NULL && nResult == META_SUCCESS) 5211 5211 { 5212 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5212 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5213 5213 o->SetEnableSave(false); 5214 5214 o->SetPassword(((CPU_SetPassword *)pEvent->m_pPacket)->m_szPassword); 5215 5215 o->SetEnableSave(true); 5216 5216 o->SaveLicqInfo(); 5217 gUserManager.DropOwner();5217 gUserManager.DropOwner(o); 5218 5218 } 5219 5219 } … … 5233 5233 { 5234 5234 CPU_Meta_SetGeneralInfo *p = (CPU_Meta_SetGeneralInfo *)pEvent->m_pPacket; 5235 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5235 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5236 5236 o->SetEnableSave(false); 5237 5237 o->SetAlias(p->m_szAlias); … … 5266 5266 o->SetEnableSave(true); 5267 5267 o->SaveGeneralInfo(); 5268 gUserManager.DropOwner();5268 gUserManager.DropOwner(o); 5269 5269 } 5270 5270 } … … 5278 5278 { 5279 5279 CPU_Meta_SetEmailInfo *p = (CPU_Meta_SetEmailInfo *)pEvent->m_pPacket; 5280 ICQOwner *o = gUserManager.FetchOwner(LOCK_W);5280 ICQOwner* o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); 5281 5281 o->SetEnableSave(false); 5282 5282 o->SetEmailSecondary(p->m_szEmailSecondary); … … 5290 5290 o->SetEnableSave(true); 5291 5291 o->SaveGeneralInfo(); 5292 gUserManager.DropOwner();5292 gUserManager.DropOwner(o); 5293 5293 } 5294 5294 } … …
