Skip to content

Commit 838cd8b

Browse files
committed
- improved response headers parsing
1 parent 960780f commit 838cd8b

File tree

2 files changed

+19
-15
lines changed

2 files changed

+19
-15
lines changed

Client/CurlClient.php

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -208,8 +208,10 @@ protected function getCurlError($resource): string
208208
protected function extractFromResponseHeaders($_, string $header): int
209209
{
210210
try {
211-
[$k, $v] = explode(':', $header, 2);
212-
$this->responseHeaders[$k] = $v;
211+
[$k, $v] = explode(':', $header, 2) + [1 => null];
212+
if (null !== $v) {
213+
$this->responseHeaders[$k] = $v;
214+
}
213215
} catch (Throwable $e) {
214216
/** NOOP **/
215217
} finally {

Client/PhpClient.php

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -168,21 +168,23 @@ protected function prepareOptions(): void
168168
*/
169169
protected function extractFromResponseHeaders($response, &$headers, &$statusCode): void
170170
{
171-
$_headers = stream_get_meta_data($response)['wrapper_data'];
172-
$statusCode = array_filter($_headers, function(string $header) {
173-
return false !== stripos($header, 'HTTP/');
174-
});
175-
176-
$statusCode = array_pop($statusCode) ?: 'HTTP/1.1 200 OK';
177-
$statusCode = (int)(explode(' ', $statusCode)[1] ?? StatusCode::OK);
178-
179-
foreach ($_headers as $header) {
180-
try {
181-
[$k, $v] = explode(':', $header, 2);
171+
try {
172+
$_headers = stream_get_meta_data($response)['wrapper_data'];
173+
$statusCode = array_filter($_headers, function(string $header) {
174+
return false !== stripos($header, 'HTTP/', 0);
175+
});
176+
$statusCode = array_pop($statusCode) ?: 'HTTP/1.1 200 OK';
177+
$statusCode = (int)(explode(' ', $statusCode)[1] ?? StatusCode::OK);
178+
179+
foreach ($_headers as $header) {
180+
[$k, $v] = explode(':', $header, 2) + [1 => null];
181+
if (null === $v) {
182+
continue;
183+
}
182184
$headers[$k] = $v;
183-
} catch (Throwable $e) {
184-
continue;
185185
}
186+
} finally {
187+
unset($_headers, $header, $k, $v);
186188
}
187189
}
188190
}

0 commit comments

Comments
 (0)