private DatabaseLocationInfo GetServerInformationForDatabase(Guid databaseId, IADDatabase database, DatabaseLocationInfo dbLocationInfo, GetServerForDatabaseFlags gsfdFlags, IPerformanceDataLogger perfLogger) { if (database != null && databaseId != database.Guid) { throw new ArgumentException("When passing in database, its GUID must match databaseId.", "database"); } ExTraceGlobals.ActiveManagerClientTracer.TraceFunction <Guid, DatabaseLocationInfo, int>((long)this.GetHashCode(), "Entering GetServerInformationForDatabase(Guid={0}, minimalLocationInfo={1}, Flags={2})", databaseId, dbLocationInfo, (int)gsfdFlags); this.DisposeCheck(); bool flag = (gsfdFlags & GetServerForDatabaseFlags.IgnoreAdSiteBoundary) != GetServerForDatabaseFlags.None; bool flag2 = (gsfdFlags & GetServerForDatabaseFlags.ReadThrough) != GetServerForDatabaseFlags.None; if (flag2 || dbLocationInfo.ServerLegacyDN == null) { if (database == null) { AdObjectLookupFlags flags = flag2 ? AdObjectLookupFlags.ReadThrough : AdObjectLookupFlags.None; using (new StopwatchPerformanceTracker("GetServerInformationForDatabaseGetDatabaseByGuidEx", perfLogger)) { database = this.GetDatabaseByGuidEx(databaseId, flags, perfLogger); } } ActiveManagerImplementation.GetServerInformationForDatabaseInternal(database, dbLocationInfo, this.m_miniServerLookup); } if (dbLocationInfo != null) { DatabaseLocationInfoResult databaseLocationInfoResult = dbLocationInfo.RequestResult; bool flag3 = false; if (flag && databaseLocationInfoResult == DatabaseLocationInfoResult.SiteViolation) { databaseLocationInfoResult = DatabaseLocationInfoResult.Success; flag3 = true; } if (flag && databaseLocationInfoResult == DatabaseLocationInfoResult.InTransitCrossSite) { databaseLocationInfoResult = DatabaseLocationInfoResult.InTransitSameSite; flag3 = true; } ExTraceGlobals.FaultInjectionTracer.TraceTest <DatabaseLocationInfoResult>(3831901501U, ref databaseLocationInfoResult); ExTraceGlobals.FaultInjectionTracer.TraceTest <bool>(2221288765U, ref flag3); if (flag3) { ExTraceGlobals.ActiveManagerClientTracer.TraceDebug <DatabaseLocationInfoResult, DatabaseLocationInfoResult>((long)this.GetHashCode(), "GetServerForDatabase(): At the caller's request, changing the location info's result from {0} to {1}.", dbLocationInfo.RequestResult, databaseLocationInfoResult); dbLocationInfo = DatabaseLocationInfo.CloneDatabaseLocationInfo(dbLocationInfo, databaseLocationInfoResult); } } if (ExTraceGlobals.ActiveManagerClientTracer.IsTraceEnabled(TraceType.DebugTrace)) { ExTraceGlobals.ActiveManagerClientTracer.TraceDebug <Guid, DatabaseLocationInfo>((long)this.GetHashCode(), "Database Location Info ({0}) = {1}", databaseId, dbLocationInfo); } ExTraceGlobals.ActiveManagerClientTracer.TraceFunction <Guid>((long)this.GetHashCode(), "Exiting GetServerInformationForDatabase(Guid={0})", databaseId); return(dbLocationInfo); }