From 241a512589ac4deee398d922a2e14caea1639bbc Mon Sep 17 00:00:00 2001 From: Hypolite Petovan Date: Thu, 16 Mar 2023 21:12:28 -0400 Subject: [PATCH] Ensure FactorySession->create returns an object no matter what - Rename redundant method name createSession - Add exception logging --- src/Core/Session/Factory/Session.php | 13 ++++++++----- static/dependencies.config.php | 2 +- 2 files changed, 9 insertions(+), 6 deletions(-) diff --git a/src/Core/Session/Factory/Session.php b/src/Core/Session/Factory/Session.php index a93cf6631e..239b050e77 100644 --- a/src/Core/Session/Factory/Session.php +++ b/src/Core/Session/Factory/Session.php @@ -55,19 +55,17 @@ class Session * @param LoggerInterface $logger * @param Profiler $profiler * @param array $server + * @return IHandleSessions */ - public function createSession(App\Mode $mode, App\BaseURL $baseURL, IManageConfigValues $config, Database $dba, Cache $cacheFactory, LoggerInterface $logger, Profiler $profiler, array $server = []): IHandleSessions + public function create(App\Mode $mode, App\BaseURL $baseURL, IManageConfigValues $config, Database $dba, Cache $cacheFactory, LoggerInterface $logger, Profiler $profiler, array $server = []): IHandleSessions { $profiler->startRecording('session'); - $session = null; + $session_handler = $config->get('system', 'session_handler', self::HANDLER_DEFAULT); try { if ($mode->isInstall() || $mode->isBackend()) { $session = new Type\Memory(); } else { - $session_handler = $config->get('system', 'session_handler', self::HANDLER_DEFAULT); - $handler = null; - switch ($session_handler) { case self::HANDLER_DATABASE: $handler = new Handler\Database($dba, $logger, $server); @@ -82,10 +80,15 @@ class Session $handler = new Handler\Cache($cache, $logger); } break; + default: + $handler = null; } $session = new Type\Native($baseURL, $handler); } + } catch (\Throwable $e) { + $logger->notice('Unable to create session', ['mode' => $mode, 'session_handler' => $session_handler, 'exception' => $e]); + $session = new Type\Memory(); } finally { $profiler->stopRecording(); return $session; diff --git a/static/dependencies.config.php b/static/dependencies.config.php index 42f193ba53..0891166424 100644 --- a/static/dependencies.config.php +++ b/static/dependencies.config.php @@ -237,7 +237,7 @@ return [ IHandleSessions::class => [ 'instanceOf' => \Friendica\Core\Session\Factory\Session::class, 'call' => [ - ['createSession', [$_SERVER], Dice::CHAIN_CALL], + ['create', [$_SERVER], Dice::CHAIN_CALL], ['start', [], Dice::CHAIN_CALL], ], ], -- 2.39.5