diff --git a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
index 60db90476..222f41e0d 100644
--- a/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
+++ b/MediaBrowser.Common.Implementations/Updates/InstallationManager.cs
@@ -168,7 +168,7 @@ namespace MediaBrowser.Common.Implementations.Updates
{
// Let dev users get results more often for testing purposes
var cacheLength = _config.CommonConfiguration.SystemUpdateLevel == PackageVersionClass.Dev
- ? TimeSpan.FromHours(1)
+ ? TimeSpan.FromMinutes(15)
: TimeSpan.FromHours(12);
if ((DateTime.UtcNow - _lastPackageListResult.Item2) < cacheLength)
diff --git a/MediaBrowser.Server.Implementations/Session/SessionManager.cs b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
index 6bb6edf7a..d3b6bc59f 100644
--- a/MediaBrowser.Server.Implementations/Session/SessionManager.cs
+++ b/MediaBrowser.Server.Implementations/Session/SessionManager.cs
@@ -44,11 +44,13 @@ namespace MediaBrowser.Server.Implementations.Session
/// The configuration manager.
private readonly IServerConfigurationManager _configurationManager;
+ private object _sessionLock = new object();
+
///
/// The _active connections
///
- private readonly ConcurrentDictionary _activeConnections =
- new ConcurrentDictionary(StringComparer.OrdinalIgnoreCase);
+ private readonly Dictionary _activeConnections =
+ new Dictionary(StringComparer.OrdinalIgnoreCase);
///
/// Occurs when [playback start].
@@ -84,7 +86,7 @@ namespace MediaBrowser.Server.Implementations.Session
/// All connections.
public IEnumerable Sessions
{
- get { return _activeConnections.Values.OrderByDescending(c => c.LastActivityDate).ToList(); }
+ get { return _activeConnections.Values.ToList().OrderByDescending(c => c.LastActivityDate); }
}
///
@@ -193,18 +195,28 @@ namespace MediaBrowser.Server.Implementations.Session
{
var key = clientType + deviceId + appVersion;
- var connection = _activeConnections.GetOrAdd(key, keyName => new SessionInfo
+ lock (_sessionLock)
{
- Client = clientType,
- DeviceId = deviceId,
- ApplicationVersion = appVersion,
- Id = Guid.NewGuid()
- });
+ SessionInfo connection;
- connection.DeviceName = deviceName;
- connection.User = user;
+ if (!_activeConnections.TryGetValue(key, out connection))
+ {
+ connection = new SessionInfo
+ {
+ Client = clientType,
+ DeviceId = deviceId,
+ ApplicationVersion = appVersion,
+ Id = Guid.NewGuid()
+ };
- return connection;
+ _activeConnections[key] = connection;
+ }
+
+ connection.DeviceName = deviceName;
+ connection.User = user;
+
+ return connection;
+ }
}
///