Implement "Reservation" flag behavior.
							parent
							
								
									344d27b19d
								
							
						
					
					
						commit
						d49cc7ca90
					
				| 
						 | 
				
			
			@ -90,6 +90,40 @@ namespace OpenSim.Services.GridService
 | 
			
		|||
            // This needs better sanity testing. What if regionInfo is registering in
 | 
			
		||||
            // overlapping coords?
 | 
			
		||||
            RegionData region = m_Database.Get(regionInfos.RegionLocX, regionInfos.RegionLocY, scopeID);
 | 
			
		||||
            if (region != null)
 | 
			
		||||
            {
 | 
			
		||||
                // There is a preexisting record
 | 
			
		||||
                //
 | 
			
		||||
                // Get it's flags
 | 
			
		||||
                //
 | 
			
		||||
                OpenSim.Data.RegionFlags rflags = (OpenSim.Data.RegionFlags)Convert.ToInt32(region.Data["Flags"]);
 | 
			
		||||
 | 
			
		||||
                // Is this a reservation?
 | 
			
		||||
                //
 | 
			
		||||
                if ((rflags & OpenSim.Data.RegionFlags.Reservation) != 0)
 | 
			
		||||
                {
 | 
			
		||||
                    // Regions reserved for the null key cannot be taken.
 | 
			
		||||
                    //
 | 
			
		||||
                    if (region.Data["PrincipalID"] == UUID.Zero.ToString())
 | 
			
		||||
                        return false;
 | 
			
		||||
 | 
			
		||||
                    // Treat it as an auth request
 | 
			
		||||
                    //
 | 
			
		||||
                    // NOTE: Fudging the flags value here, so these flags
 | 
			
		||||
                    //       should not be used elsewhere. Don't optimize
 | 
			
		||||
                    //       this with the later retrieval of the same flags!
 | 
			
		||||
                    //
 | 
			
		||||
                    rflags |= OpenSim.Data.RegionFlags.Authenticate;
 | 
			
		||||
                }
 | 
			
		||||
 | 
			
		||||
                if ((rflags & OpenSim.Data.RegionFlags.Authenticate) != 0)
 | 
			
		||||
                {
 | 
			
		||||
                    // TODO: Authenticate the principal
 | 
			
		||||
 | 
			
		||||
                    return false;
 | 
			
		||||
                }
 | 
			
		||||
            }
 | 
			
		||||
 | 
			
		||||
            if ((region != null) && (region.RegionID != regionInfos.RegionID))
 | 
			
		||||
            {
 | 
			
		||||
                m_log.WarnFormat("[GRID SERVICE]: Region {0} tried to register in coordinates {1}, {2} which are already in use in scope {3}.", 
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
		Reference in New Issue