Skip to content

Commit a18fefa

Browse files
committed
Properly deal with transport issues
1 parent c3aaa27 commit a18fefa

1 file changed

Lines changed: 14 additions & 11 deletions

File tree

src/MetaLoader.php

Lines changed: 14 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@
1010
use SimpleSAML\Metadata;
1111
use SimpleSAML\Utils;
1212
use SimpleSAML\XML\DOMDocumentFactory;
13+
use Symfony\Component\HttpClient\Exception\TransportException;
1314
use Symfony\Component\VarExporter\VarExporter;
1415

1516
/**
@@ -112,17 +113,19 @@ public function loadSource(array $source): void
112113
// GET!
113114
$client = $httpUtils->createHttpClient($context);
114115
$response = $client->request('GET', $source['src'], $context);
115-
$statusCode = $response->getStatusCode();
116+
try {
117+
$statusCode = $response->getStatusCode();
118+
} catch (TransportException $e) {
119+
Logger::info('No response from ' . $source['src'] . ' - attempting to re-use cached metadata');
120+
$this->addCachedMetadata($source);
121+
return;
122+
}
123+
116124
$responseHeaders = $response->getHeaders(false);
117125
$data = $response->getContent(false);
118126

119127
// We have response headers, so the request succeeded
120-
if ($responseHeaders === []) {
121-
// No response headers, this means the request failed in some way, so re-use old data
122-
Logger::info('No response from ' . $source['src'] . ' - attempting to re-use cached metadata');
123-
$this->addCachedMetadata($source);
124-
return;
125-
} elseif ($statusCode === 304) {
128+
if ($statusCode === 304) {
126129
// 304 response
127130
Logger::debug('Received HTTP 304 (Not Modified) - attempting to re-use cached metadata');
128131
$this->addCachedMetadata($source);
@@ -136,7 +139,7 @@ public function loadSource(array $source): void
136139
} else {
137140
// Local file.
138141
$data = file_get_contents($source['src']);
139-
$responseHeaders = null;
142+
$responseHeaders = [];
140143
}
141144

142145
// Everything OK. Proceed.
@@ -428,13 +431,13 @@ private function addCachedMetadata(array $source): void
428431
* Store caching state data for a source
429432
*
430433
* @param array $source
431-
* @param array|null $responseHeaders
434+
* @param array $responseHeaders
432435
*/
433-
private function saveState(array $source, ?array $responseHeaders): void
436+
private function saveState(array $source, array $responseHeaders): void
434437
{
435438
if (isset($source['conditionalGET']) && $source['conditionalGET']) {
436439
// Headers section
437-
if ($responseHeaders !== null) {
440+
if ($responseHeaders !== []) {
438441
$candidates = ['last-modified', 'etag'];
439442

440443
foreach ($candidates as $candidate) {

0 commit comments

Comments
 (0)