Show
Ignore:
Timestamp:
06/14/08 11:11:04 (7 months ago)
Author:
eugene
Message:

Revised the functions that used the New User setting.

Files:
1 modified

Legend:

Unmodified
Added
Removed
  • trunk/licq/src/icqpacket.cpp

    r6300 r6302  
    28232823      } 
    28242824 
    2825       // No group yet?  Use default.  No default? Use ID of 1 (general) 
     2825      // No group yet? Use ID of the first one in the list 
    28262826      if (m_nGSID == 0) 
    28272827      { 
    2828         unsigned short nNewGroup = gUserManager.NewUserGroup(); 
    2829         m_nGSID = gUserManager.GetIDFromGroup(nNewGroup); 
     2828        // First group if none was specified 
     2829        GroupMap* groups = gUserManager.LockGroupList(LOCK_R); 
     2830        if (groups->size() > 0) 
     2831        { 
     2832          LicqGroup* g = groups->begin()->second; 
     2833          g->Lock(LOCK_R); 
     2834          m_nGSID = g->icqGroupId(); 
     2835          g->Unlock(); 
     2836        } 
     2837        gUserManager.UnlockGroupList(); 
    28302838 
    28312839        if (m_nGSID == 0) 
    2832         { 
    2833           // First group if none was specified 
    2834           GroupMap* groups = gUserManager.LockGroupList(LOCK_R); 
    2835           if (groups->size() > 0) 
    2836           { 
    2837             LicqGroup* g = groups->begin()->second; 
    2838             g->Lock(LOCK_R); 
    2839             m_nGSID = g->icqGroupId(); 
    2840             g->Unlock(); 
    2841           } 
    2842           gUserManager.UnlockGroupList(); 
    2843         } 
    2844  
    2845         if (m_nGSID == 0) 
    2846           m_nGSID = 1; // General (unless user renamed group or wasnt created yet) 
     2840          m_nGSID = 1; // Must never actually reach this point 
    28472841      } 
    28482842 
     
    29712965 
    29722966      // Check for a group id 
    2973       const UserGroupList& userGroups = u->GetGroups(); 
    2974       if (_nGroup) 
     2967      unsigned short i = 0; 
     2968      while (m_nGSID == 0) 
    29752969      { 
    2976         // Use the passed in group 
    2977         m_nGSID = gUserManager.GetIDFromGroup(_nGroup); 
    2978       } 
    2979       else if (u->GetGSID() && _bAuthReq) 
    2980       { 
    2981         m_nGSID = u->GetGSID(); // changing groups but require auth 
    2982       } 
    2983       else 
    2984       { 
    2985         // Use the first group that the user is in as the server stored group 
    2986         for (UserGroupList::iterator i = userGroups.begin(); i != userGroups.end(); ++i) 
     2970        switch (i) 
    29872971        { 
    2988           m_nGSID = gUserManager.GetIDFromGroup(*i); 
    2989           if (m_nGSID != 0) 
     2972          case 0: 
     2973            // Passed in id 
     2974            m_nGSID = gUserManager.GetIDFromGroup(_nGroup); 
     2975            break; 
     2976 
     2977          case 1: 
     2978            // Preset id 
     2979            m_nGSID = u->GetGSID(); 
     2980            break; 
     2981 
     2982          case 2: 
     2983            // Use the first group the user is in as the server stored group 
     2984            { 
     2985              const UserGroupList& userGroups = u->GetGroups(); 
     2986              for (UserGroupList::iterator i = userGroups.begin(); i != userGroups.end(); ++i) 
     2987              { 
     2988                m_nGSID = gUserManager.GetIDFromGroup(*i); 
     2989                if (m_nGSID != 0) 
     2990                  break; 
     2991              } 
     2992            } 
     2993            break; 
     2994 
     2995          case 3: 
     2996            // Use the first group from the list 
     2997            { 
     2998              GroupMap* groups = gUserManager.LockGroupList(LOCK_R); 
     2999              if (groups->size() > 0) 
     3000              { 
     3001                LicqGroup* g = groups->begin()->second; 
     3002                g->Lock(LOCK_R); 
     3003                m_nGSID = g->icqGroupId(); 
     3004                g->Unlock(); 
     3005              } 
     3006              gUserManager.UnlockGroupList(); 
     3007            } 
     3008            break; 
     3009 
     3010          default: 
     3011            m_nGSID = 1; 
    29903012            break; 
    29913013        } 
     3014        i++; 
    29923015      } 
    29933016 
     
    30083031      for (tlv_iter = tlvs.begin(); tlv_iter != tlvs.end(); ++tlv_iter) 
    30093032        tlvBuffer.PackTLV(tlv_iter->second); 
    3010  
    3011       if (m_nGSID == 0) 
    3012       { 
    3013         unsigned short nNewGroup = gUserManager.NewUserGroup(); 
    3014         m_nGSID = gUserManager.GetIDFromGroup(nNewGroup); 
    3015  
    3016         if (m_nGSID == 0) 
    3017         { 
    3018           GroupMap* groups = gUserManager.LockGroupList(LOCK_R); 
    3019           if (groups->size() > 0) 
    3020           { 
    3021             LicqGroup* g = groups->begin()->second; 
    3022             g->Lock(LOCK_R); 
    3023             m_nGSID = g->icqGroupId(); 
    3024             g->Unlock(); 
    3025           } 
    3026           gUserManager.UnlockGroupList(); 
    3027         } 
    3028  
    3029         if (m_nGSID == 0) 
    3030           m_nGSID = 1; // General (unless user renamed group or wasnt created yet) 
    3031       } 
    3032  
    3033       szUnicodeAlias = 0;//strdup(u->GetAlias()); 
    3034       nExportSize = 0;//4 + strlen(szUnicodeAlias); 
    30353033 
    30363034      SetExtraInfo(m_nGSID); 
     
    30873085 
    30883086  buffer->PackUnsignedShortBE(nStrLen); 
    3089   if (szUnicodeName && _nType == ICQ_ROSTxGROUP) 
    3090     buffer->Pack(szUnicodeName, nStrLen); 
    3091   else 
    3092     buffer->Pack(_szName, nStrLen); 
     3087  buffer->Pack(szUnicodeName != NULL ? szUnicodeName : _szName, nStrLen); 
    30933088  buffer->PackUnsignedShortBE(m_nGSID); 
    30943089  buffer->PackUnsignedShortBE(m_nSID);