CURLOPT_READFUNCTION - 如何从有效的写入字节中区分错误
CURLOPT_READFUNCTION - how to distinct error from valid written bytes
我对 libcurl 中的 CURLOPT_READFUNCTION 函数有疑问。
文档提到回调应该 return 号码
写入字节数组的字节数 -
- 例如,如果 CURL 要求写入 100 个字节,而我的文件包含 42 个字节,那么我将写入 42 个字节,return 42。
- 但如果我有某种错误,我应该 return CURL_READFUNC_ABORT - 它的枚举数也是 42。
有人知道 curl 如何区分这两种情况吗?
CURL_READFUNC_ABORT
是 0x10000000,这是一个你不能 return 作为 "number of bytes read" 的值,因为缓冲区永远不会那么大。因此,您假设的情况不会发生在现实世界中。
libcurl 代码首先检查值是否为 CURL_READFUNC_ABORT
,这会导致 CURLE_ABORTED_BY_CALLBACK
return 代码,或者如果值与传入的值不对齐,它将 return CURLE_READ_ERROR
.
我对 libcurl 中的 CURLOPT_READFUNCTION 函数有疑问。
文档提到回调应该 return 号码 写入字节数组的字节数 -
- 例如,如果 CURL 要求写入 100 个字节,而我的文件包含 42 个字节,那么我将写入 42 个字节,return 42。
- 但如果我有某种错误,我应该 return CURL_READFUNC_ABORT - 它的枚举数也是 42。
有人知道 curl 如何区分这两种情况吗?
CURL_READFUNC_ABORT
是 0x10000000,这是一个你不能 return 作为 "number of bytes read" 的值,因为缓冲区永远不会那么大。因此,您假设的情况不会发生在现实世界中。
libcurl 代码首先检查值是否为 CURL_READFUNC_ABORT
,这会导致 CURLE_ABORTED_BY_CALLBACK
return 代码,或者如果值与传入的值不对齐,它将 return CURLE_READ_ERROR
.