1010use SimpleSAML \Metadata ;
1111use SimpleSAML \Utils ;
1212use SimpleSAML \XML \DOMDocumentFactory ;
13+ use Symfony \Component \HttpClient \Exception \TransportException ;
1314use 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