From: Jon K. <em...@us...> - 2004-07-22 16:43:25
|
Update of /cvsroot/licq/licq/src In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv13012/src Modified Files: icqd-srv.cpp icqd.cpp licq.cpp protoplugind.cpp Log Message: Fix registering a new user. A few other minor fixes/cleanups. Index: icqd-srv.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v retrieving revision 1.130 retrieving revision 1.131 diff -u -d -r1.130 -r1.131 --- icqd-srv.cpp 17 Jun 2004 13:22:45 -0000 1.130 +++ icqd-srv.cpp 22 Jul 2004 16:43:15 -0000 1.131 @@ -544,9 +544,7 @@ void CICQDaemon::icqRegister(const char *_szPasswd) { - ICQOwner *o = gUserManager.FetchOwner(LOCK_W); - o->SetPassword(_szPasswd); - gUserManager.DropOwner(); + m_szRegisterPasswd = strdup(_szPasswd); m_bRegistering = true; // CPU_RegisterFirst *p = new CPU_RegisterFirst(); // gLog.Info("%sRegistering a new user (#%lu)...\n", L_SRVxSTR, p->Sequence()); @@ -557,14 +555,10 @@ //-----ICQ::icqRegisterFinish------------------------------------------------ void CICQDaemon::icqRegisterFinish() { - ICQOwner *o = gUserManager.FetchOwner(LOCK_W); - char *szPasswd = o->Password(); - gUserManager.DropOwner(); - CPU_RegisterFirst *pFirst = new CPU_RegisterFirst(); SendEvent_Server(pFirst); - CPU_Register *p = new CPU_Register(szPasswd); + CPU_Register *p = new CPU_Register(m_szRegisterPasswd); gLog.Info(tr("%sRegistering a new user...\n"), L_SRVxSTR); SendExpectEvent_Server(0, p, NULL); } @@ -1691,8 +1685,16 @@ FOR_EACH_PROTO_USER_END ICQOwner *o = gUserManager.FetchOwner(LOCK_W); - ChangeUserStatus(o, ICQ_STATUS_OFFLINE); + if (o) + ChangeUserStatus(o, ICQ_STATUS_OFFLINE); gUserManager.DropOwner(); + + if (m_szRegisterPasswd) + { + free(m_szRegisterPasswd); + m_szRegisterPasswd = 0; + } + PushPluginSignal(new CICQSignal(SIGNAL_LOGOFF, 0, 0)); } @@ -1791,7 +1793,8 @@ // Now get the internal ip from this socket CPacket::SetLocalIp( NetworkIpToPacketIp(s->LocalIp() )); ICQOwner *o = gUserManager.FetchOwner(LOCK_W); - o->SetIntIp(s->LocalIp()); + if (o) + o->SetIntIp(s->LocalIp()); gUserManager.DropOwner(); gSocketManager.AddSocket(s); @@ -5248,7 +5251,7 @@ { case ICQ_SNACxNEW_UIN_ERROR: { - gLog.Warn(tr("%sNew UIN error, is your password too long? (max 8 characters)\n"), L_WARNxSTR); + gLog.Warn(tr("%sRegistration error.\n"), L_WARNxSTR); break; } case ICQ_SNACxNEW_UIN: @@ -5271,7 +5274,18 @@ } gLog.Info(tr("%sReceived new uin: %lu\n"), L_SRVxSTR, nNewUin); - gUserManager.SetOwnerUin(nNewUin); + char szUin[14]; + snprintf(szUin, sizeof(szUin), "%lu", nNewUin); + gUserManager.AddOwner(szUin, LICQ_PPID); + + ICQOwner *o = gUserManager.FetchOwner(LICQ_PPID, LOCK_W); + if (o) + { + o->SetPassword(m_szRegisterPasswd); + gUserManager.DropOwner(LICQ_PPID); + free(m_szRegisterPasswd); + m_szRegisterPasswd = 0; + } // Reconnect now int nSD = m_nTCPSrvSocketDesc; Index: icqd.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/icqd.cpp,v retrieving revision 1.89 retrieving revision 1.90 diff -u -d -r1.89 -r1.90 --- icqd.cpp 17 Jun 2004 12:32:02 -0000 1.89 +++ icqd.cpp 22 Jul 2004 16:43:15 -0000 1.90 @@ -101,6 +101,7 @@ m_nServerAck = 0; m_bLoggingOn = false; m_bOnlineNotifies = true; + m_szRegisterPasswd = 0; fifo_fs = NULL; @@ -544,7 +545,7 @@ int p = -1; pthread_mutex_lock(&licq->mutex_protoplugins); - ProtoPluginsListIter it = licq->list_protoplugins.begin(); + ProtoPluginsListIter it; for (it = licq->list_protoplugins.begin(); it != licq->list_protoplugins.end(); it++) Index: licq.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/licq.cpp,v retrieving revision 1.81 retrieving revision 1.82 diff -u -d -r1.81 -r1.82 --- licq.cpp 21 Mar 2004 09:07:42 -0000 1.81 +++ licq.cpp 22 Jul 2004 16:43:15 -0000 1.82 @@ -939,7 +939,7 @@ pthread_join((*p_iter)->thread_plugin, (void **)&nPluginResult); gLog.Info(tr("%sPlugin %s exited with code %d.\n"), L_ENDxSTR, (*p_iter)->Name(), *nPluginResult); free (nPluginResult); - dlclose((*p_iter)->m_pHandle); + //dlclose((*p_iter)->m_pHandle); delete *p_iter; list_protoplugins.erase(p_iter); } Index: protoplugind.cpp =================================================================== RCS file: /cvsroot/licq/licq/src/protoplugind.cpp,v retrieving revision 1.6 retrieving revision 1.7 diff -u -d -r1.6 -r1.7 --- protoplugind.cpp 21 Mar 2004 09:07:42 -0000 1.6 +++ protoplugind.cpp 22 Jul 2004 16:43:15 -0000 1.7 @@ -26,6 +26,7 @@ CProtoPlugin::CProtoPlugin() { m_szLibName = 0; + pthread_mutex_init(&mutex_signals, NULL); pipe_plugin[0] = -1; pipe_plugin[1] = -1; fName = 0; |