Changeset 6302
- Timestamp:
- 06/14/08 11:11:04 (6 months ago)
- Files:
-
- 1 modified
-
trunk/licq/src/icqpacket.cpp (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/licq/src/icqpacket.cpp
r6300 r6302 2823 2823 } 2824 2824 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 2826 2826 if (m_nGSID == 0) 2827 2827 { 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(); 2830 2838 2831 2839 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 2847 2841 } 2848 2842 … … 2971 2965 2972 2966 // Check for a group id 2973 const UserGroupList& userGroups = u->GetGroups();2974 if (_nGroup)2967 unsigned short i = 0; 2968 while (m_nGSID == 0) 2975 2969 { 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) 2987 2971 { 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; 2990 3012 break; 2991 3013 } 3014 i++; 2992 3015 } 2993 3016 … … 3008 3031 for (tlv_iter = tlvs.begin(); tlv_iter != tlvs.end(); ++tlv_iter) 3009 3032 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);3035 3033 3036 3034 SetExtraInfo(m_nGSID); … … 3087 3085 3088 3086 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); 3093 3088 buffer->PackUnsignedShortBE(m_nGSID); 3094 3089 buffer->PackUnsignedShortBE(m_nSID);
