diff --git a/rhodecode/apps/file_store/views.py b/rhodecode/apps/file_store/views.py --- a/rhodecode/apps/file_store/views.py +++ b/rhodecode/apps/file_store/views.py @@ -93,6 +93,9 @@ class FileStoreView(BaseAppView): file_path = self.storage.store_path(file_uid) return FileResponse(file_path) + # For file store we don't submit any session data, this logic tells the + # Session lib to skip it + setattr(self.request, '_file_response', True) @LoginRequired() @NotAnonymous() diff --git a/rhodecode/lib/rc_beaker.py b/rhodecode/lib/rc_beaker.py --- a/rhodecode/lib/rc_beaker.py +++ b/rhodecode/lib/rc_beaker.py @@ -32,10 +32,14 @@ def BeakerSessionFactoryConfig(**options def session_callback(request, response): exception = getattr(request, 'exception', None) - if (exception is None or self._cookie_on_exception) and self.accessed(): + file_response = getattr(request, '_file_response', None) + + if file_response is None \ + and (exception is None or self._cookie_on_exception) \ + and self.accessed(): self.persist() headers = self.__dict__['_headers'] - if headers['set_cookie'] and headers['cookie_out']: + if headers.get('set_cookie') and headers.get('cookie_out'): response.headerlist.append(('Set-Cookie', headers['cookie_out'])) request.add_response_callback(session_callback)