From 047ecd71092ba1f549441d7911fe1456d61d932d Mon Sep 17 00:00:00 2001 From: Sebastien Ros Date: Thu, 30 Jan 2014 16:58:58 -0800 Subject: [PATCH] Disposing sessions correctly --- src/Orchard/Data/SessionLocator.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/src/Orchard/Data/SessionLocator.cs b/src/Orchard/Data/SessionLocator.cs index c6c9edae4..120d9c297 100644 --- a/src/Orchard/Data/SessionLocator.cs +++ b/src/Orchard/Data/SessionLocator.cs @@ -99,6 +99,12 @@ namespace Orchard.Data { _cancelled = false; } } + + if (_session != null) { + _session.Dispose(); + _session = null; + } + } private void EnsureSession() { @@ -114,7 +120,6 @@ namespace Orchard.Data { class OrchardSessionInterceptor : IInterceptor { private readonly ISessionInterceptor[] _interceptors; private readonly ILogger _logger; - private ISession _session; public OrchardSessionInterceptor(ISessionInterceptor[] interceptors, ILogger logger) { _interceptors = interceptors; @@ -236,8 +241,6 @@ namespace Orchard.Data { } void IInterceptor.SetSession(ISession session) { - _session = session; - if (_interceptors.Length == 0) return; _interceptors.Invoke(i => i.SetSession(session), _logger); }