8000 Handle empty response data correctly · symfony/symfony@caf6c20 · GitHub
[go: up one dir, main page]

Skip to content
8000

Commit caf6c20

Browse files
committed
Handle empty response data correctly
curl will return -1.0 for CURLINFO_CONTENT_LENGTH_DOWNLOAD since 7.19.4 if not known (means not specified by the server response). When handling data for empty error responses, this will cause us to compare 0.0 (CURLINFO_SIZE_DOWNLOAD) with -1.0 (CURLINFO_CONTENT_LENGTH_DOWNLOAD) and thus error out with SSL error 0 then (which means normal close). We therefore now explicitly allow to download 0 bytes, when no size has been indicated.
1 parent 2c7c4ba commit caf6c20

File tree

1 file changed

+1
-1
lines changed

1 file changed

+1
-1
lines changed

src/Symfony/Component/HttpClient/Response/CurlResponse.php

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ private static function perform(ClientState $multi, ?array &$responses = null):
320320
}
321321

322322
$multi->handlesActivity[$id][] = null;
323-
$multi->handlesActivity[$id][] = \in_array($result, [\CURLE_OK, \CURLE_TOO_MANY_REDIRECTS], true) || '_0' === $waitFor || curl_getinfo($ch, \CURLINFO_SIZE_DOWNLOAD) === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD) ? null : new TransportException(ucfirst(curl_error($ch) ?: curl_strerror($result)).sprintf(' for "%s".', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL)));
323+
$multi->handlesActivity[$id][] = \in_array($result, [\CURLE_OK, \CURLE_TOO_MANY_REDIRECTS], true) || '_0' === $waitFor || curl_getinfo($ch, \CURLINFO_SIZE_DOWNLOAD) === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD) || ('C' === $waitFor[0] && 0.0 === curl_getinfo($ch, \CURLINFO_SIZE_DOWNLOAD) && -1.0 === curl_getinfo($ch, \CURLINFO_CONTENT_LENGTH_DOWNLOAD)) ? null : new TransportException(ucfirst(curl_error($ch) ?: curl_strerror($result)).sprintf(' for "%s".', curl_getinfo($ch, \CURLINFO_EFFECTIVE_URL)));
324324
}
325325
} finally {
326326
$multi->performing = false;

0 commit comments

Comments
 (0)
0