From d7b0fbd38f80a80424bf3645564eb3b9f9cc78fe Mon Sep 17 00:00:00 2001 From: Nathan Gass Date: Mon, 13 Nov 2023 16:04:15 +0100 Subject: Revert "simplify maxlength implementation and make compatible with writefunction" This reverts commit f75da376ff31eed20e409797260ba832be3b9308. --- it_url.class | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) (limited to 'it_url.class') diff --git a/it_url.class b/it_url.class index 25f4eee..2b3df72 100644 --- a/it_url.class +++ b/it_url.class @@ -306,12 +306,18 @@ function request($p=array()) // FIXME 2025-01 NG just use CURLOPT_MAXFILESIZE if we have curl 8.4 - if ($p['maxlength']) + if ($p['maxlength'] && !$p['writefunction']) { - $opts[CURLOPT_XFERINFOFUNCTION] = function ($dummy, $dummy2, $total) use ($p) { - return $total < $p['maxlength'] ? 0 : 1; + $content = ""; + $opts[CURLOPT_WRITEFUNCTION] = function ($dummy, $data) use ($p, &$content) { + static $total = 0; + $size = strlen($data); + $total += $size; + if ($total > $p['maxlength']) + return 0; + $content .= $data; + return $size; }; - $opts[CURLOPT_NOPROGRESS] = 0; } $opts[CURLOPT_HEADERFUNCTION] = function ($dummy, $data) use (&$header) { @@ -323,6 +329,9 @@ function request($p=array()) $got = curl_exec($curl); + if ($p['maxlength'] && $got) + $got = $content; + $this->curlinfo = curl_getinfo($curl); EDC('curlinfo', $this->curlinfo); -- cgit v1.2.3