Internet: make postURL() error reporting behaviour more predictable

err is now always set to null when doing a new operation.

previously, if the same var was used multiple times and a previous one failed,
code might think that a previous error belonged to the current operation.
This commit is contained in:
Dylan K. Taylor 2025-01-06 22:52:05 +00:00
parent 9a130bce32
commit 97c5902ae2
No known key found for this signature in database
GPG Key ID: 8927471A91CAFD3D

View File

@ -157,22 +157,21 @@ class Internet{
* POSTs data to an URL
* NOTE: This is a blocking operation and can take a significant amount of time. It is inadvisable to use this method on the main thread.
*
* @phpstan-template TErrorVar of mixed
*
* @param string[]|string $args
* @param string[] $extraHeaders
* @param string|null $err reference parameter, will be set to the output of curl_error(). Use this to retrieve errors that occurred during the operation.
* @phpstan-param string|array<string, string> $args
* @phpstan-param list<string> $extraHeaders
* @phpstan-param TErrorVar $err
* @phpstan-param-out TErrorVar|string $err
* @phpstan-param-out string|null $err
*/
public static function postURL(string $page, array|string $args, int $timeout = 10, array $extraHeaders = [], &$err = null) : ?InternetRequestResult{
try{
return self::simpleCurl($page, $timeout, $extraHeaders, [
$result = self::simpleCurl($page, $timeout, $extraHeaders, [
CURLOPT_POST => 1,
CURLOPT_POSTFIELDS => $args
]);
$err = null;
return $result;
}catch(InternetException $ex){
$err = $ex->getMessage();
return null;