Giter Club home page Giter Club logo

perl-net-curl's People

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

perl-net-curl's Issues

Net::Curl::Easy::reset causes a segfault

Example program which always causes a Segmentation fault:

#!/usr/bin/env perl
use common::sense;
use Net::Curl::Easy qw(:constants);

my $easy = Net::Curl::Easy->new({});
$easy->setopt(CURLOPT_URL, q(http://ifconfig.me/all));
$easy->perform;
$easy->reset;
$easy->setopt(CURLOPT_URL, q(http://ifconfig.me/ip));
$easy->perform;

GDB output from the dumped core:

Core was generated by `perl curl-reset.pl'.
Program terminated with signal 11, Segmentation fault.
#0  0x00007f630caa4116 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
(gdb) where
#0  0x00007f630caa4116 in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#1  0x00007f630caa517f in ?? () from /lib/x86_64-linux-gnu/libc.so.6
#2  0x00007f630caa8e12 in calloc () from /lib/x86_64-linux-gnu/libc.so.6
#3  0x00007f630bed2c22 in curl_docalloc (wanted_elements=1, wanted_size=1656, line=3597, source=0x7f630bf0306e "url.c") at memdebug.c:216
#4  0x00007f630beb8b84 in allocate_conn (data=0x1b72968) at url.c:3597
#5  0x00007f630bebb553 in create_conn (data=0x1b72968, in_connect=0x7fffaa5b4670, async=0x7fffaa5b464e) at url.c:4857
#6  0x00007f630bebc4bd in Curl_connect (data=0x1b72968, in_connect=0x7fffaa5b4670, asyncp=0x7fffaa5b464e, protocol_done=0x7fffaa5b464f) at url.c:5327
#7  0x00007f630becd700 in connect_host (data=0x1b72968, conn=0x7fffaa5b4670) at transfer.c:1948
#8  0x00007f630becda02 in Curl_do_perform (data=0x1b72968) at transfer.c:2095
#9  0x00007f630becdd7c in Curl_perform (data=0x1b72968) at transfer.c:2241
#10 0x00007f630bece7a3 in curl_easy_perform (curl=0x1b72968) at easy.c:536
#11 0x00007f630c133e5e in XS_Net__Curl__Easy_perform (cv=<optimized out>) at ./curl-Easy-xs.inc:396
#12 0x00000000004de372 in Perl_pp_entersub () at pp_hot.c:2778
#13 0x00000000004ac14b in Perl_runops_debug () at dump.c:2119
#14 0x0000000000443455 in S_run_body (oldscope=1) at perl.c:2402
#15 perl_run (my_perl=<optimized out>) at perl.c:2320
#16 0x000000000041fa1d in main (argc=2, argv=0x7fffaa5b4a38, env=0x7fffaa5b4a50) at perlmain.c:120

curl_slist_append using

Hello. Apparently, there is some kind of error in the module. I use $easy->pushopt(CURLOPT_PROXYHEADER, ['a: b']); and get Unknown error. I rewrote this code in python, everything works fine there.

setopt() uses SvPV(), doesn’t document whether it’s for bytes or characters

> perl -Mstrict -w -e'use Net::Curl::Easy qw(:constants); my $payload = "épée"; my $easy = Net::Curl::Easy->new(); $easy->setopt( +CURLOPT_URL, "http://example.com" ); $easy->setopt( CURLOPT_VERBOSE, 1 ); $easy->setopt( +CURLOPT_COPYPOSTFIELDS, $payload ); $easy->perform()' >/dev/null
* About to connect() to example.com port 80 (#0)
*   Trying 2606:2800:220:1:248:1893:25c8:1946...
* Connected to example.com (2606:2800:220:1:248:1893:25c8:1946) port 80 (#0)
> POST / HTTP/1.1
Host: example.com
Accept: */*
Content-Length: 6
Content-Type: application/x-www-form-urlencoded

* upload completely sent off: 6 out of 6 bytes
<snip>

Note that the upload size is 6 bytes.

But if you change the SV’s internal representation, the output also changes:

> perl -MJSON -Mstrict -w -e'use Net::Curl::Easy qw(:constants); my $payload = "épée"; $payload = JSON::decode_json( JSON::encode_json([$payload]) )->[0]; my $easy = Net::Curl::Easy->new(); $easy->setopt( +CURLOPT_URL, "http://example.com" ); $easy->setopt( CURLOPT_VERBOSE, 1 ); $easy->setopt( +CURLOPT_COPYPOSTFIELDS, $payload ); $easy->perform()' >/dev/null
* About to connect() to example.com port 80 (#0)
*   Trying 2606:2800:220:1:248:1893:25c8:1946...
* Connected to example.com (2606:2800:220:1:248:1893:25c8:1946) port 80 (#0)
> POST / HTTP/1.1
Host: example.com
Accept: */*
Content-Length: 10
Content-Type: application/x-www-form-urlencoded

* upload completely sent off: 10 out of 10 bytes
<snip>

Pure Perl code isn’t supposed to have to care about a string’s internal representation, but this behaviour of Net::Curl forces it.

The proper fix is probably to create a setopt_bytes that always treats the given SV as a byte string. (So if it’s upgraded, what curl gets from Perl will be the downgraded variant.)

Additionally, the documentation should be updated to advise of this situation with plain setopt().

A workaround is to call utf8::downgrade() before giving the value to setopt().

t/70-escape-unescape.t fails

On a CentOS6 system I see the following failure:

#   Failed test 'escape'
#   at t/70-escape-unescape.t line 37.
#          got: '~-_.'
#     expected: '%7E%2D%5F%2E'
# Looks like you failed 1 test of 24.
t/70-escape-unescape.t ..................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/24 subtests 

Output of 00-info.t:

# libcurl
# version():
# 	libcurl/7.19.7 NSS/3.27.1 zlib/1.2.3 libidn/1.18 libssh2/1.4.2
# version_info():
# 	{age} = 3;
# 	{ares_num} = 0;
# 	{features} = 
# 		| CURL_VERSION_IPV6 (1<<0)
# 		| CURL_VERSION_SSL (1<<2)
# 		| CURL_VERSION_LIBZ (1<<3)
# 		| CURL_VERSION_NTLM (1<<4)
# 		| CURL_VERSION_GSSNEGOTIATE (1<<5)
# 		| CURL_VERSION_LARGEFILE (1<<9)
# 		| CURL_VERSION_IDN (1<<10);
# 	missing features = 
# 		| CURL_VERSION_KERBEROS4 (1<<1)
# 		| CURL_VERSION_DEBUG (1<<6)
# 		| CURL_VERSION_ASYNCHDNS (1<<7)
# 		| CURL_VERSION_SPNEGO (1<<8)
# 		| CURL_VERSION_SSPI (1<<11)
# 		| CURL_VERSION_CONV (1<<12)
# 		| CURL_VERSION_CURLDEBUG (1<<13);
# 	{host} = 'x86_64-redhat-linux-gnu';
# 	{iconv_ver_num} = 0;
# 	{libidn} = '1.18';
# 	{libssh_version} = 'libssh2/1.4.2';
# 	{libz_version} = '1.2.3';
# 	{protocols} = dict, file, ftp, ftps, http, https, ldap, ldaps, scp, sftp, telnet, tftp;
# 	{ssl_version} = 'NSS/3.27.1';
# 	{ssl_version_num} = 0;
# 	{version} = '7.19.7';
# 	{version_num} = 0x071307;
# build version:
# 	LIBCURL_COPYRIGHT = '1996 - 2009 Daniel Stenberg, <[email protected]>.'
# 	LIBCURL_VERSION = '7.19.7'
# 	LIBCURL_VERSION_NUM = 0x071307
# 	LIBCURL_VERSION_MAJOR = 7
# 	LIBCURL_VERSION_MINOR = 19
# 	LIBCURL_VERSION_PATCH = 7
# 	LIBCURL_TIMESTAMP = 'Wed Nov  4 12:34:59 UTC 2009'

Net-Curl test failures on FreeBSD 9.2 (cookies related)

The Net-Curl testsuite fails for FreeBSD 9.2, see http://matrix.cpantesters.org/?dist=Net-Curl;os=freebsd;reports=1
The reason is that the standard freebsd 9.2 libcurl package is compiled without cookies support. This will be fixed for future freebsd versions (see http://www.freshports.org/ftp/curl/, the Changelog entry from 06 Oct 2013 18:36:49 says "Turn COOKIES on by default"). I just rebuild libcurl from ports with COOKIES turned on manually, and since then Net-Curl passes on my machine.

Probably there should be a feature check if cookies support is activated, and depending on this some tests should be skipped?

Net::Curl fails to build with older libcurl, but > $minimum_libcurl_ver

This comes from my first attempt to install Net::Curl as a
likely replacement for WWW::Curl

RHEL5 comes with 7.15.5 (fails to build, see below for 5.16.3)
RHEL6 comes with 7.19.7 (builds & tests PASS under 5.16.3 & 5.18.0-RC3)

505.3: chdir to /Net-Curl-0.28
505.3: Makefile.PL && make && make test && make install
Found libcurl version 7.15.5
Use of uninitialized value $curl{"prefix"} in concatenation (.) or string at Makefile.PL line 217.
Reading /usr/include/curl/curl.h (gcc -E /usr/include/curl/curl.h)
Reading /usr/include/curl/multi.h (gcc -E /usr/include/curl/multi.h)
CURLE_SSL_CRL_BADFILE unexpected
CURLGSSAPI_DELEGATION_FLAG unexpected
CURLGSSAPI_DELEGATION_NONE unexpected
CURLGSSAPI_DELEGATION_POLICY_FLAG unexpected
CURLOPT_CLOSEFUNCTION unexpected
CURLOPT_CRLFILE unexpected
CURLOPT_FTPASCII unexpected
CURLOPT_GSSAPI_DELEGATION unexpected
CURLOPT_HTTPREQUEST unexpected
CURLOPT_MUTE unexpected
CURLOPT_PASSWDDATA unexpected
CURLOPT_PASSWDFUNCTION unexpected
CURLOPT_PASV_HOST unexpected
CURLOPT_PROTOCOLS unexpected
CURLOPT_REDIR_PROTOCOLS unexpected
CURLOPT_SOURCE_HOST unexpected
CURLOPT_SOURCE_PATH unexpected
CURLOPT_SOURCE_PORT unexpected
CURLOPT_SOURCE_POSTQUOTE unexpected
CURLOPT_SOURCE_PREQUOTE unexpected
CURLOPT_SOURCE_QUOTE unexpected
CURLOPT_SOURCE_URL unexpected
CURLOPT_SOURCE_USERPWD unexpected
CURLPROTO_ALL unexpected
CURLPROTO_DICT unexpected
CURLPROTO_FILE unexpected
CURLPROTO_FTP unexpected
CURLPROTO_FTPS unexpected
CURLPROTO_HTTP unexpected
CURLPROTO_HTTPS unexpected
CURLPROTO_LDAP unexpected
CURLPROTO_LDAPS unexpected
CURLPROTO_TELNET unexpected
CURLPROTO_TFTP unexpected
-> found 439 constants (should be 405)
Writing const-defenums-h.inc
Writing const-curl-xs.inc
Writing const-easy-xs.inc
Writing const-form-xs.inc
Writing const-multi-xs.inc
Writing const-share-xs.inc
Writing curl-Easy-c.inc
Writing curl-Easy-xs.inc
Writing curl-Form-c.inc
Writing curl-Form-xs.inc
Writing curl-Multi-c.inc
Writing curl-Multi-xs.inc
Writing curl-Share-c.inc
Writing curl-Share-xs.inc
Writing lib/Net/Curl/examples.pod
<- examples/01-curl-transport.pl
<- examples/02-multi-simple.pl
<- examples/03-multi-event.pl
<- examples/04-share-threads.pl
<- examples/05-irssi-downloader.pl
Writing lib/Net/Curl/Compat.pm
Checking if your kit is complete...
Looks good
Writing Makefile for Net::Curl
Wide character in print at /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/MakeMaker.pm line 1034.
Wide character in print at /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/MakeMaker.pm line 1034.
Wide character in print at /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/MakeMaker.pm line 1034.
Wide character in print at /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/MakeMaker.pm line 1034.
Writing MYMETA.yml and MYMETA.json
cp lib/Net/Curl/Compat.pm blib/lib/Net/Curl/Compat.pm
cp lib/Net/Curl.pm blib/lib/Net/Curl.pm
cp lib/Net/Curl/Form.pm blib/lib/Net/Curl/Form.pm
cp lib/Net/Curl/Share.pm blib/lib/Net/Curl/Share.pm
cp lib/Net/Curl/Multi.pm blib/lib/Net/Curl/Multi.pm
cp lib/Net/Curl/examples.pod blib/lib/Net/Curl/examples.pod
cp lib/Net/Curl/Easy.pm blib/lib/Net/Curl/Easy.pm
/opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/bin/perl /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/xsubpp -typemap /opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/ExtUtils/typemap -typemap typemap Curl.xs > Curl.xsc && mv Curl.xsc Curl.c
gcc -c -Wall -O2 -g -pipe -Wall -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic -DVERSION="0.28" -DXS_VERSION="0.28" -fPIC "-I/opt/perl/cis.perl-base2.rhel5-5.16.3.20130514/lib/5.16.3/x86_64-linux/CORE" Curl.c
Curl.xs: In function ‘perl_curl_constant_add’:
Curl.xs:379: warning: ignoring #pragma clang diagnostic
Curl.xs:380: warning: ignoring #pragma clang diagnostic
Curl.xs:382: warning: ignoring #pragma clang diagnostic
Curl.xs: In function ‘boot_Net__Curl’:
Curl.xs:446: error: ‘LIBCURL_COPYRIGHT’ undeclared (first use in this function)
Curl.xs:446: error: (Each undeclared identifier is reported only once
Curl.xs:446: error: for each function it appears in.)
Curl.xs:448: error: ‘LIBCURL_TIMESTAMP’ undeclared (first use in this function)
make: *** [Curl.o] Error 1
506.6: 106/673 tarballs, 2/20 passes, install tests FAIL 0/10 Net-Curl-0.28.tar.gz 10 failed

old-10errbuf.t fails with curl 8.6.0

Curl 8.6.0 was recently released on 2024-01-31: https://curl.se/changes.html#8_6_0

When I tried to build this perl module against it, the test suite of Net::Curl::Easy failed on the old/10errbuf.t test with this error:

#   Failed test 'Reading redirected STDERR'
#   at t/old-10errbuf.t line 50.
#                   '* Protocol "badprotocol" not supported'
#     doesn't match '(?^ix:^\*\s+(?:
#     Protocol \s "? badprotocol "? \s not \s supported \s or \s disabled \s in \s libcurl |
#     Unsupported \s protocol: \s badprotocol |
#     Rebuilt \s URL \s to: \s badprotocol://.+ |
#     Closing \s connection \s -1 |
#     Could \s not \s resolve \s host: \s badprotocol |
#     Could \s not \s resolve: \s badprotocol \(Domain \s name \s not \s found\) |
#     Expire \s in \s 0 \s ms \s for \s 6 \s \(transfer \s 0x[0-9a-f]+\) |
#     Uses \s proxy \s env \s variable \s https?_proxy \s == \s '[^']+'
# )$)'
# Looks like you failed 1 test of 13.

It appears this version of curl has abbreviated the error reporting to just * Protocol "badprotocol" not supported.

The following patch allows the test to past (the first regex pattern could be adjusted to accept * Protocol "badprotocol" not supported or disabled in libcurl and * Protocol "badprotocol" not supported, but I found this easier to read and maintain):

--- a/t/old-10errbuf.t
+++ b/t/old-10errbuf.t
@@ -49,6 +49,7 @@
 }
 like( $line, qr/^\*\s+(?:
     Protocol \s "? badprotocol "? \s not \s supported \s or \s disabled \s in \s libcurl |
+    Protocol \s "? badprotocol "? \s not \s supported |
     Unsupported \s protocol: \s badprotocol |
     Rebuilt \s URL \s to: \s badprotocol:\/\/.+ |
     Closing \s connection \s -1 |

multi object lacks CURLMOPT_SOCKETFUNCTION callback!

Calling examples/02-multi-simple.pl generates two warnings:

multi object lacks CURLMOPT_SOCKETFUNCTION callback! at examples/02-multi-simple.pl line 62.
multi object lacks CURLMOPT_SOCKETFUNCTION callback! at examples/02-multi-simple.pl line 62.

Probably this started with Net::Curl 0.44. Other than the warnings the script seems to work.

So what can be done to avoid this warning? Should the script call something like

$multi->setopt( Net::Curl::Multi::CURLMOPT_SOCKETFUNCTION, sub { return 1 });

Or shouldn't there be a warning at all in this situation?

Feature Request: get() and set() Easy methods

It would be nice to be able to do:

$easy->set(
    URL => "http://example.com/",
    FILE => \$easy->{body},
);

… and $easy->get('CERTINFO').

This would obviate the need to import constants and in general make for a smoother experience of using Net::Curl.

@sparky, @eserte: I’m happy to implement this … thoughts?

make of Net-Curl-0.41.tar.gz failes - ‘CURLALTSVC_ALTUSED’ undeclared

During install of Net-Curl-0.41.tar.gz on a linux box recently I get following error:

Running Mkbootstrap for Curl ()
chmod 644 "Curl.bs"
"/usr/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Curl.bs blib/arch/auto/Net/Curl/Curl.bs 644
"/usr/bin/perl" "/usr/share/perl/5.30/ExtUtils/xsubpp" -typemap '/usr/share/perl/5.30/ExtUtils/typemap' -typemap '/root/.cpan/build/Net-Curl-0.41-2/typemap' Curl.xs > Curl.xsc
mv Curl.xsc Curl.c
x86_64-linux-gnu-gcc -c -Wall -Wno-unknown-pragmas -O2 -g -DVERSION="0.41" -DXS_VERSION="0.41" -fPIC "-I/usr/lib/x86_64-linux-gnu/perl/5.30/CORE" Curl.c
In file included from Curl.xs:23:
./const-easy-xs.inc: In function ‘boot_Net__Curl’:
const-defenums-h.inc:2:29: error: ‘CURLALTSVC_ALTUSED’ undeclared (first use in this function)
2 | # define CURLALTSVC_ALTUSED CURLALTSVC_ALTUSED
| ^~~~~~~~~~~~~~~~~~
const-defenums-h.inc:2:29: note: in definition of macro ‘CURLALTSVC_ALTUSED’
2 | # define CURLALTSVC_ALTUSED CURLALTSVC_ALTUSED
| ^~~~~~~~~~~~~~~~~~
const-defenums-h.inc:2:29: note: each undeclared identifier is reported only once for each function it appears in
2 | # define CURLALTSVC_ALTUSED CURLALTSVC_ALTUSED
| ^~~~~~~~~~~~~~~~~~
const-defenums-h.inc:2:29: note: in definition of macro ‘CURLALTSVC_ALTUSED’
2 | # define CURLALTSVC_ALTUSED CURLALTSVC_ALTUSED
| ^~~~~~~~~~~~~~~~~~
make: *** [Makefile:360: Curl.o] Error 1
SYP/Net-Curl-0.41.tar.gz
/usr/bin/make -- NOT OK
Failed during this command:
SYP/Net-Curl-0.41.tar.gz : make NO

Following cURL version is installed (debian package):

curl 7.66.0 (x86_64-pc-linux-gnu) libcurl/7.66.0 OpenSSL/1.1.1d zlib/1.2.11 brotli/1.0.7 libidn2/2.2.0 libpsl/0.20.2 (+libidn2/2.0.5) libssh2/1.8.0 nghttp2/1.39.2 librtmp/2.3
Release-Date: 2019-09-11
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp scp sftp smb smbs smtp smtps telnet tftp
Features: AsynchDNS brotli GSS-API HTTP2 HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM NTLM_WB PSL SPNEGO SSL TLS-SRP UnixSockets

Most likely this relates to latest changes (https://curl.haxx.se/changes.html - Fixed in 7.66.0 - September 11 2019):

Bugfixes:
CURLOPT_ALTSVC_CTRL.3: remove CURLALTSVC_ALTUSED

Compilation fails if $curl_flags is non-empty

On FreeBSD systems I see the following problem:

cc -c    -Wall -Wno-unknown-pragmas-I/usr/local/include -O2 -pipe    -DVERSION=\"0.38\"  -DXS_VERSION=\"0.38\" -DPIC -fPIC "-I/usr/perl5.24.1p/lib/5.24.1/amd64-freebsd/CORE"   Curl.c
warning: unknown warning option '-Wno-unknown-pragmas-I/usr/local/include'; did you mean '-Wno-unknown-pragmas'? [-Wunknown-warning-option]
Curl.xs:20:10: fatal error: 'curl/curl.h' file not found
#include <curl/curl.h>
         ^
1 warning and 1 error generated.
*** Error code 1

There's a space missing between the -Wno-unknown-pragmas and -I/usr/local/include options. The following patch could fix it:

diff --git a/Makefile.PL b/Makefile.PL
index 3b5b899..223a264 100644
--- a/Makefile.PL
+++ b/Makefile.PL
@@ -152,7 +152,7 @@ WriteMakefile(
        VERSION_FROM    => 'lib/Net/Curl.pm',
        ABSTRACT_FROM   => 'lib/Net/Curl.pm',
        AUTHOR          => "Przemys${l_}aw Iskra <sparky at pld-linux.org>",
-       CCFLAGS         => $devel_cflags . $curl{cflags} . $bits,
+       CCFLAGS         => $devel_cflags . ' ' . $curl{cflags} . $bits,
        LIBS            => $curl{libs},
        SIGN            => 1,
        LICENSE         => 'mit',

Can't build properly on windows

I am using strawberry perl 5.20.2 x64 and trying to install Net::Curl.

I download this curl package: http://curl.haxx.se/gknw.net/7.40.0/dist-w64/curl-7.40.0-devel-mingw64.7z and unpack to d:/downloads.

Then modify Makefile.PL in Net::Curl distribution:

my %curl = (
    incdir => 'd:/downloads/curl-7.40.0-devel-mingw64/include', # /some/path (where curl/curl.h is)
    cflags => '-Id:/downloads/curl-7.40.0-devel-mingw64/include',   # -I/some/path
    libs => '-Ld:/downloads/curl-7.40.0-devel-mingw64/lib64 -lcurldll', # -lcurl
    version => '7.40.0' # 7.21.0
);

and run standard commands.

perl Makefile.PL

d:\downloads\Net-Curl-0.37-2>perl Makefile.PL
Using manually introduced curl options:
   incdir => d:/downloads/curl-7.40.0-devel-mingw64/include
   cflags => -Id:/downloads/curl-7.40.0-devel-mingw64/include
     libs => -Ld:/downloads/curl-7.40.0-devel-mingw64/lib64 -lcurldll
  version => 7.40.0
Reading d:/downloads/curl-7.40.0-devel-mingw64/include/curl/curl.h (gcc -E -Id:/downloads/curl-7.40.0-devel-mingw64/include d:/downloads/curl-7.40.0-devel-mingw64/include/curl/curl.h)
Reading d:/downloads/curl-7.40.0-devel-mingw64/include/curl/multi.h (gcc -E -Id:/downloads/curl-7.40.0-devel-mingw64/include d:/downloads/curl-7.40.0-devel-mingw64/include/curl/multi.h)
-> found 715 constants (should be 715)
Writing const-defenums-h.inc
Writing const-curl-xs.inc
Writing const-easy-xs.inc
Writing const-form-xs.inc
Writing const-multi-xs.inc
Writing const-share-xs.inc
Writing curl-Easy-c.inc
Writing curl-Easy-xs.inc
Writing curl-Form-c.inc
Writing curl-Form-xs.inc
Writing curl-Multi-c.inc
Writing curl-Multi-xs.inc
Writing curl-Share-c.inc
Writing curl-Share-xs.inc
Writing lib/Net/Curl/examples.pod
<- examples/01-curl-transport.pl
<- examples/02-multi-simple.pl
<- examples/03-multi-event.pl
<- examples/04-share-threads.pl
<- examples/05-irssi-downloader.pl
Writing lib/Net/Curl/Compat.pm
Checking if your kit is complete...
Looks good
Generating a dmake-style Makefile
Writing Makefile for Net::Curl
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{00e1}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{00e1}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{00e1}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
"\x{0142}" does not map to cp1251 at d:/devel/perl/perl/lib/ExtUtils/MakeMaker.pm line 1182.
Writing MYMETA.yml and MYMETA.json

dmake

d:\downloads\Net-Curl-0.37-2>dmake
cp lib/Net/Curl/Easy.pm blib\lib\Net\Curl\Easy.pm
cp lib/Net/Curl.pm blib\lib\Net\Curl.pm
cp lib/Net/Curl/Form.pm blib\lib\Net\Curl\Form.pm
cp lib/Net/Curl/Multi.pm blib\lib\Net\Curl\Multi.pm
cp lib/Net/Curl/Share.pm blib\lib\Net\Curl\Share.pm
cp lib/Net/Curl/examples.pod blib\lib\Net\Curl\examples.pod
cp lib/Net/Curl/Compat.pm blib\lib\Net\Curl\Compat.pm
Running Mkbootstrap for Net::Curl ()
"D:\devel\perl\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 644 "Curl.bs"
"D:\devel\perl\perl\bin\perl.exe" "D:\devel\perl\perl\lib\ExtUtils\xsubpp"  -typemap "D:\devel\perl\perl\lib\ExtUtils\typemap" -typemap "typemap"  Curl.xs > Curl.xsc && "D:\devel\perl\perl\bin\perl.exe" -MExtUtils::Command -e mv -- Curl.xsc Curl.c
gcc -c          -Wall -Id:/downloads/curl-7.40.0-devel-mingw64/include -s -O2     -DVERSION=\"0.37\"    -DXS_VERSION=\"0.37\"  "-ID:\devel\perl\perl\lib\CORE"   Curl.c
Curl.xs: In function 'perl_curl_constant_add':
Curl.xs:387:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic push
 ^
Curl.xs:388:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic ignored "-Wunused-value"
 ^
Curl.xs:390:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic pop
 ^
In file included from Curl.xs:17:0:
curl-Share-c.inc: In function 'cb_share_lock':
D:\devel\perl\perl\lib\CORE/perl.h:154:22: warning: unused variable 'my_perl' [-Wunused-variable]
 #  define pTHX  tTHX my_perl PERL_UNUSED_DECL
                      ^
D:\devel\perl\perl\lib\CORE/perl.h:165:19: note: in expansion of macro 'pTHX'
 #    define dTHX  pTHX = PERL_GET_THX
                   ^
curl-Share-c.inc:30:2: note: in expansion of macro 'dTHX'
  dTHX;
  ^
curl-Share-c.inc: In function 'cb_share_unlock':
D:\devel\perl\perl\lib\CORE/perl.h:154:22: warning: unused variable 'my_perl' [-Wunused-variable]
 #  define pTHX  tTHX my_perl PERL_UNUSED_DECL
                      ^
D:\devel\perl\perl\lib\CORE/perl.h:165:19: note: in expansion of macro 'pTHX'
 #    define dTHX  pTHX = PERL_GET_THX
                   ^
curl-Share-c.inc:40:2: note: in expansion of macro 'dTHX'
  dTHX;
  ^
Curl.c: In function 'XS_Net__Curl__Multi_socket_action':
Curl.c:1307:6: warning: overflow in implicit constant conversion [-Woverflow]
      sockfd = CURL_SOCKET_BAD;
      ^
In file included from d:/downloads/curl-7.40.0-devel-mingw64/include/curl/curl.h:2339:0,
                 from Curl.xs:20:
In function 'perl_curl_easy_setopt_object',
    inlined from 'XS_Net__Curl__Easy_setopt' at ./curl-Easy-xs.inc:388:32:
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:47:35: warning: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
         _curl_easy_setopt_err_long();                                         \
                                   ^
Curl_Easy_setopt.c:302:10: note: in expansion of macro 'curl_easy_setopt'
    ret = curl_easy_setopt( easy->handle, option,
          ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:53:37: warning: call to '_curl_easy_setopt_err_string' declared with attribute warning:
curl_easy_setopt expects a string (char* or char[]) argument for this option [enabled by default]
         _curl_easy_setopt_err_string();                                       \
                                     ^
Curl_Easy_setopt.c:302:10: note: in expansion of macro 'curl_easy_setopt'
    ret = curl_easy_setopt( easy->handle, option,
          ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:80:38: warning: call to '_curl_easy_setopt_err_conv_cb' declared with attribute warning: curl_easy_setopt expects a curl_conv_callback argument for this option [enabled by default]
         _curl_easy_setopt_err_conv_cb();                                      \
                                      ^
Curl_Easy_setopt.c:302:10: note: in expansion of macro 'curl_easy_setopt'
    ret = curl_easy_setopt( easy->handle, option,
          ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:47:35: warning: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
         _curl_easy_setopt_err_long();                                         \
                                   ^
Curl_Easy_setopt.c:308:5: note: in expansion of macro 'curl_easy_setopt'
     curl_easy_setopt( easy->handle, option, NULL );
     ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:47:35: warning: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
         _curl_easy_setopt_err_long();                                         \
                                   ^
Curl_Easy_setopt.c:319:11: note: in expansion of macro 'curl_easy_setopt'
     ret = curl_easy_setopt( easy->handle, option, form->post );
           ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:53:37: warning: call to '_curl_easy_setopt_err_string' declared with attribute warning:
curl_easy_setopt expects a string (char* or char[]) argument for this option [enabled by default]
         _curl_easy_setopt_err_string();                                       \
                                     ^
Curl_Easy_setopt.c:319:11: note: in expansion of macro 'curl_easy_setopt'
     ret = curl_easy_setopt( easy->handle, option, form->post );
           ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:80:38: warning: call to '_curl_easy_setopt_err_conv_cb' declared with attribute warning: curl_easy_setopt expects a curl_conv_callback argument for this option [enabled by default]
         _curl_easy_setopt_err_conv_cb();                                      \
                                      ^
Curl_Easy_setopt.c:319:11: note: in expansion of macro 'curl_easy_setopt'
     ret = curl_easy_setopt( easy->handle, option, form->post );
           ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:47:35: warning: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
         _curl_easy_setopt_err_long();                                         \
                                   ^
Curl_Easy_setopt.c:326:5: note: in expansion of macro 'curl_easy_setopt'
     curl_easy_setopt( easy->handle, option, NULL );
     ^
d:/downloads/curl-7.40.0-devel-mingw64/include/curl/typecheck-gcc.h:47:35: warning: call to '_curl_easy_setopt_err_long' declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
         _curl_easy_setopt_err_long();                                         \
                                   ^
Curl_Easy_setopt.c:338:11: note: in expansion of macro 'curl_easy_setopt'
     ret = curl_easy_setopt( easy->handle, option, share->handle );
           ^
"D:\devel\perl\perl\bin\perl.exe" -MExtUtils::Mksymlists \
     -e "Mksymlists('NAME'=>\"Net::Curl\", 'DLBASE' => 'Curl', 'DL_FUNCS' => {  }, 'FUNCLIST' => [], 'IMPORTS' => {  }, 'DL_VARS' => []);"
dlltool --def Curl.def --output-exp dll.exp
g++.exe -o blib\arch\auto\Net\Curl\Curl.xs.dll -Wl,--base-file -Wl,dll.base -mdll -s -L"D:\devel\perl\perl\lib\CORE" -L"D:\devel\perl\c\lib" Curl.o   "D:\devel\perl\perl\lib\CORE\libperl520.a" "d:\downloads\curl-7.40.0-devel-mingw64\lib64\libcurldll.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libmoldname.a" "D:\
devel\perl\c\x86_64-w64-mingw32\lib\libkernel32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libuser32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libgdi32.a"
"D:\devel\perl\c\x86_64-w64-mingw32\lib\libwinspool.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libcomdlg32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libadvapi32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libshell32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libole32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\liboleaut32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libnetapi32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libuuid.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libws2_32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libmpr.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libwinmm.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libversion.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libodbc32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libodbccp32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libcomctl32.a" dll.exp
dlltool --def Curl.def --base-file dll.base --output-exp dll.exp
g++.exe -o blib\arch\auto\Net\Curl\Curl.xs.dll -mdll -s -L"D:\devel\perl\perl\lib\CORE" -L"D:\devel\perl\c\lib" Curl.o   "D:\devel\perl\perl\lib\CORE\libperl520.a" "d:\downloads\curl-7.40.0-devel-mingw64\lib64\libcurldll.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libmoldname.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libkernel32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libuser32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libgdi32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libwinspool.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libcomdlg32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libadvapi32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libshell32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libole32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\liboleaut32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libnetapi32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libuuid.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libws2_32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libmpr.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libwinmm.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libversion.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libodbc32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libodbccp32.a" "D:\devel\perl\c\x86_64-w64-mingw32\lib\libcomctl32.a" dll.exp
"D:\devel\perl\perl\bin\perl.exe" -MExtUtils::Command -e chmod -- 755 blib\arch\auto\Net\Curl\Curl.xs.dll

dmake test

d:\downloads\Net-Curl-0.37-2>dmake test
"D:\devel\perl\perl\bin\perl.exe" "-MExtUtils::Command::MM" "-MTest::Harness" "-e" "undef *Test::Harness::Switches; test_harness(0, 'blib\lib', 'blib\arch')" t/*.t
t/00-info.t ................................ # libcurl
# version():
#       libcurl/7.40.0 OpenSSL/1.0.0o zlib/1.2.8 WinIDN libssh2/1.4.3 librtmp/2.3
# version_info():
#       {age} = 3;
#       {ares_num} = 0;
#       {features} =
#               | CURL_VERSION_SSL (1<<2)
#               | CURL_VERSION_LIBZ (1<<3)
#               | CURL_VERSION_NTLM (1<<4)
#               | CURL_VERSION_ASYNCHDNS (1<<7)
#               | CURL_VERSION_SPNEGO (1<<8)
#               | CURL_VERSION_LARGEFILE (1<<9)
#               | CURL_VERSION_IDN (1<<10)
#               | CURL_VERSION_SSPI (1<<11)
#               | CURL_VERSION_KERBEROS5 (1<<18);
#       missing features =
#               | CURL_VERSION_IPV6 (1<<0)
#               | CURL_VERSION_KERBEROS4 (1<<1)
#               | CURL_VERSION_GSSNEGOTIATE (1<<5)
#               | CURL_VERSION_DEBUG (1<<6)
#               | CURL_VERSION_CONV (1<<12)
#               | CURL_VERSION_CURLDEBUG (1<<13)
#               | CURL_VERSION_TLSAUTH_SRP (1<<14)
#               | CURL_VERSION_NTLM_WB (1<<15)
#               | CURL_VERSION_HTTP2 (1<<16)
#               | CURL_VERSION_GSSAPI (1<<17)
#               | CURL_VERSION_UNIX_SOCKETS (1<<19);
#       {host} = 'x86_64-pc-win32';
#       {iconv_ver_num} = 0;
#       {libssh_version} = 'libssh2/1.4.3';
#       {libz_version} = '1.2.8';
#       {protocols} = dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, pop3, pop3s, rtmp, rtsp, scp, sftp, smtp, smtps, telnet, tftp;
#       {ssl_version} = 'OpenSSL/1.0.0o';
#       {ssl_version_num} = 0;
#       {version} = '7.40.0';
#       {version_num} = 0x072800;
# build version:
#       LIBCURL_COPYRIGHT = '1996 - 2015 Daniel Stenberg, <[email protected]>.'
#       LIBCURL_VERSION = '7.40.0'
#       LIBCURL_VERSION_NUM = 0x072800
#       LIBCURL_VERSION_MAJOR = 7
#       LIBCURL_VERSION_MINOR = 40
#       LIBCURL_VERSION_PATCH = 0
#       LIBCURL_TIMESTAMP = 'Thu Jan  8 08:17:17 UTC 2015'
t/00-info.t ................................ ok
t/01-constants.t ........................... ok
t/02-methods.t ............................. ok
t/03-cookies.t ............................. ok
t/40-callback-opensocket.t ................. 1/7 Couldn't connect to server# Looks like you planned 7 tests but ran 6.
# Looks like your test exited with 25 just after 6.
Terminating on signal SIGINT(2)
Terminating on signal SIGINT(2)
Caught SIGINT. Trying to quit ...
dmake:  Warning: -- Internal Warning: finished pid 60 is not in pq!?

tests stuck on t/40-callback-opensocket.t.

Please, help to resolve this and get Net::Curl work on windows.

Double-free if easy is freed at global destruction

> perl -Ilib -MNet::Curl::Promiser::AnyEvent -MAnyEvent -Mstrict -w -MNet::Curl::Easy -e'our $easy = Net::Curl::Easy->new(); $easy->setopt( Net::Curl::Easy::CURLOPT_URL, "https://google.com" ); print qq<$INC{"Net/Curl/Easy.pm"}$/>; my $promiser = Net::Curl::Promiser::AnyEvent->new(); $promiser->add_handle($easy);'
/opt/local/lib/perl5/site_perl/5.26/darwin-thread-multi-2level/Net/Curl/Easy.pm
perl(24346,0x1169935c0) malloc: *** error for object 0x7fc16fd3abe0: pointer being freed was not allocated
perl(24346,0x1169935c0) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6

Also happens with Mojo:

> perl -Ilib -MNet::Curl::Promiser::Mojo -MAnyEvent -Mstrict -w -MNet::Curl::Easy -e'our $easy = Net::Curl::Easy->new(); $easy->setopt( Net::Curl::Easy::CURLOPT_URL, "https://google.com" ); print qq<$INC{"Net/Curl/Easy.pm"}$/>; my $promiser = Net::Curl::Promiser::Mojo->new(); $promiser->add_handle($easy);'
/opt/local/lib/perl5/site_perl/5.26/darwin-thread-multi-2level/Net/Curl/Easy.pm
perl(24382,0x10d8095c0) malloc: *** error for object 0x7f84cff55bb0: pointer being freed was not allocated
perl(24382,0x10d8095c0) malloc: *** set a breakpoint in malloc_error_break to debug
Abort trap: 6

Seen on Perl 5.26 on macOS 10.14.

I think I have a fix; I’m just writing a test.

Getting "callback function is not set"

Hi,
Im getting "callback function is not set" if URL has a domain name. If I use IP the error doesnt show. I used a code example from http://stackoverflow.com/questions/36898569/understanding-async-in-perl-on-specific-example/ by Ikegami.
Ubuntu 14.04.4 LTS, 4.2.0-30-generic.
Net::Curl::Multi is up to date (0.37).
OS Curl removed and installed from source. C-ares also.
curl 7.48.0 (x86_64-pc-linux-gnu) libcurl/7.48.0 OpenSSL/1.0.1f zlib/1.2.8 c-ares/1.11.0 libidn/1.28 librtmp/2.3
Protocols: dict file ftp ftps gopher http https imap imaps ldap ldaps pop3 pop3s rtmp rtsp smb smbs smtp smtps telnet tftp
Features: AsynchDNS IDN IPv6 Largefile NTLM NTLM_WB SSL libz TLS-SRP UnixSockets

Any ideas what might couse this? ;)
Thanks!

Strange segfault on macOS Mojave

I don’t see this on Linux; I’ve not tried other OSes.

use strict;
use warnings;

use Net::Curl::Multi;
use Net::Curl::Easy qw(:constants);

print "Perl $^V$/";
print "Net::Curl $Net::Curl::VERSION$/";

my $multi = Net::Curl::Multi->new();

my $self = { multi => $multi };

$multi->setopt(
    Net::Curl::Multi::CURLMOPT_SOCKETFUNCTION,
    \&_socket_fn,
);

sub _socket_fn { 0 }

my $handle = Net::Curl::Easy->new();
$handle->setopt( CURLOPT_URL() => 'http://perl.org' );
$handle->setopt( CURLOPT_FOLLOWLOCATION() => 1 );

$multi->setopt( Net::Curl::Multi::CURLMOPT_TIMERFUNCTION(), \&_cb_timer );
$multi->setopt( Net::Curl::Multi::CURLMOPT_TIMERDATA(), $self );

$multi->add_handle($handle);

sub _cb_timer { 0 }

die "ohno";

It outputs:

Perl v5.26.3
Net::Curl 0.42
ohno at ./repro.pl line 42.
Segmentation fault: 11

… but inconsistently: sometimes it segfaults; sometimes the thrown exception just kills the process normally.

Net::Curl blackholes exceptions from callbacks

I spent a good while recently hunting down an error that would have been much easier to find if Net::Curl reported exceptions from callbacks rather than throwing them away.

I’m going to submit a PR to warn if a callback ends with an exception.

macOS: cookie sharing seems not to work

#!/usr/bin/env perl

use strict;
use warnings;

use Net::Curl::Easy;
use Net::Curl::Share;

my $share = Net::Curl::Share->new();
$share->setopt( Net::Curl::Share::CURLSHOPT_SHARE(), Net::Curl::Share::CURL_LOCK_DATA_COOKIE() );

my $easy1 = Net::Curl::Easy->new();
$easy1->setopt( Net::Curl::Easy::CURLOPT_VERBOSE(), 1 );
$easy1->setopt( Net::Curl::Easy::CURLOPT_SHARE(), $share );
$easy1->setopt( Net::Curl::Easy::CURLOPT_URL(), "http://www.google.com/search?q=perl" );
$easy1->perform();

my $easy2 = Net::Curl::Easy->new();
$easy2->setopt( Net::Curl::Easy::CURLOPT_VERBOSE(), 1 );
$easy2->setopt( Net::Curl::Easy::CURLOPT_SHARE(), $share );
$easy2->setopt( Net::Curl::Easy::CURLOPT_URL(), "http://www.google.com/search?q=curl" );
$easy2->perform();

^^ The above shows libcurl not sending the Cookie: header in the 2nd request.

The equivalent C code, though, does send the Coookie:

#include <stdio.h>
#include <curl/curl.h>

void main() {
    CURLSH* share = curl_share_init();
    curl_share_setopt(share, CURLSHOPT_SHARE, CURL_LOCK_DATA_COOKIE);

    CURL* easy1 = curl_easy_init();
    curl_easy_setopt( easy1, CURLOPT_VERBOSE, 1 );
    curl_easy_setopt( easy1, CURLOPT_SHARE, share );

    curl_easy_setopt( easy1, CURLOPT_URL, "http://www.google.com/search?q=perl" );
    curl_easy_perform(easy1);

    CURL* easy2 = curl_easy_init();
    curl_easy_setopt( easy2, CURLOPT_VERBOSE, 1 );
    curl_easy_setopt( easy2, CURLOPT_SHARE, share );

    curl_easy_setopt( easy2, CURLOPT_URL, "http://www.google.com/search?q=curl" );
    curl_easy_perform(easy2);
}

I note the same problem with examples/02-multi-simple.pl in the distribution.

Occasional segfault at global destruction

I observed a segfault at global destruction and tracked it down to a case where the multi is freed while an easy is removed from it.

I wasn’t able to create a minimum-reproduction, alas, but I have a simple fix.

http2 partial defect with a proxy

Hi,

I don't have the same behaviour if i use the perl module (i use the following code: https://github.com/centreon/centreon-plugins/blob/master/centreon/plugins/backend/http/curl.pm) or curl command.

The curl command working (it seems to use HTTP2):

curl -vvv  -k --proxy 'http://XXXX:[email protected]:8080'  'https://rvrparad.devoteam.com/gericau/login-form.jsp' > /tmp/result.Txt
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0*   Trying 10.0.0.1...
* TCP_NODELAY set
* Connected to proxy.hm.dm.ad (10.0.0.1) port 8080 (#0)
* allocate connect buffer!
* Establish HTTP proxy tunnel to rvrparad.devoteam.com:443
* Proxy auth using Basic with user 'cs.supad'
> CONNECT rvrparad.devoteam.com:443 HTTP/1.1
> Host: rvrparad.devoteam.com:443
> Proxy-Authorization: Basic Y3Muc
> User-Agent: curl/7.61.1
> Proxy-Connection: Keep-Alive
>
< HTTP/1.0 200 Connection established
<
* Proxy replied 200 to CONNECT request
* CONNECT phase completed!
* ALPN, offering h2
* ALPN, offering http/1.1
* successfully set certificate verify locations:
*   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
} [5 bytes data]
* TLSv1.3 (OUT), TLS handshake, Client hello (1):
} [512 bytes data]
* CONNECT phase completed!
* CONNECT phase completed!
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, Server hello (2):
{ [122 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
{ [15 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Certificate (11):
{ [4879 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, CERT verify (15):
{ [264 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Finished (20):
{ [52 bytes data]
* TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, [no content] (0):
} [1 bytes data]
* TLSv1.3 (OUT), TLS handshake, Finished (20):
} [52 bytes data]
* SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
* ALPN, server accepted to use h2
* Server certificate:
*  subject: serialNumber=402 968 655 00165; jurisdictionC=FR; businessCategory=Private Organization; C=FR; ST=▒le-de-France; O=Devoteam; CN=rvrparad.devoteam.com
*  start date: Dec 16 00:00:00 2021 GMT
*  expire date: Jan 16 23:59:59 2023 GMT
*  issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo RSA Extended Validation Secure Server CA
*  SSL certificate verify ok.
* Using HTTP2, server supports multi-use
* Connection state changed (HTTP/2 confirmed)
* Copying HTTP/2 data in stream buffer to connection buffer after upgrade: len=0
} [5 bytes data]
* TLSv1.3 (OUT), TLS app data, [no content] (0):
} [1 bytes data]
* TLSv1.3 (OUT), TLS app data, [no content] (0):
} [1 bytes data]
* TLSv1.3 (OUT), TLS app data, [no content] (0):
} [1 bytes data]
* Using Stream ID: 1 (easy handle 0x55f9c096a6b0)
} [5 bytes data]
* TLSv1.3 (OUT), TLS app data, [no content] (0):
} [1 bytes data]
> GET /gericau/login-form.jsp HTTP/2
> Host: rvrparad.devoteam.com
> User-Agent: curl/7.61.1
> Accept: */*
>
{ [5 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [57 bytes data]
* TLSv1.3 (IN), TLS handshake, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
{ [57 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* Connection state changed (MAX_CONCURRENT_STREAMS == 100)!
} [5 bytes data]
* TLSv1.3 (OUT), TLS app data, [no content] (0):
} [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
< HTTP/2 200
< strict-transport-security: max-age=31536000; includeSubDomains; preload
< x-frame-options: SAMEORIGIN
< x-xss-protection: 1; mode=block
< x-content-type-options: nosniff
< content-security-policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: blob:
< content-type: text/html;charset=iso-8859-15
< date: Thu, 04 Aug 2022 09:20:26 GMT
< set-cookie: JSESSIONID=ACEBDD7D8756C933B620FF4D9AA54AB8; Path=/gericau; Secure; HttpOnly
< vary: Accept-Encoding
< x-robots-tag: noindex
< server: Apache
<
{ [42 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
* TLSv1.3 (IN), TLS app data, [no content] (0):
{ [1 bytes data]
100 29138    0 29138    0     0   296k      0 --:--:-- --:--:-- --:--:--  296k
* Connection #0 to host prc37cti1.hm.dm.ad left intact

My command using the perl module (the proxy doesn't offer HTTP2, why the diff with curl command ?):

/usr/lib/centreon/plugins//centreon_protocol_http.pl --plugin=apps::protocols::http::plugin --mode=expected-content --hostname=rvrparad.devoteam.com --proto='https' --port='' --urlpath='/gericau/login-form.jsp' --expected-string='' --warning-time='3' --critical-time='4' --warning-content='' --critical-content='%{code} != 200 and %{code} != 401' --unknown-content='' --unknown-status='' --warning-size='' --critical-size='' --proxyurl='http://XXX:[email protected]:8080'  --http-backend='curl'  --insecure --debug
UNKNOWN: curl perform error : Transferred a partial file
== Info:   Trying 10.0.0.1...
== Info: TCP_NODELAY set
== Info: Connected to proxy.hm.dm.ad (10.0.0.1) port 8080 (#0)
== Info: allocate connect buffer!
== Info: Establish HTTP proxy tunnel to rvrparad.devoteam.com:443
== Info: Proxy auth using Basic with user 'cs.supad'
=> Send header: CONNECT rvrparad.devoteam.com:443 HTTP/1.1
Host: rvrparad.devoteam.com:443
Proxy-Authorization: Basic Y3Muc
Proxy-Connection: Keep-Alive

=> Recv header: HTTP/1.0 200 Connection established
=> Recv header:
== Info: Proxy replied 200 to CONNECT request
== Info: CONNECT phase completed!
== Info: ALPN, offering http/1.1
== Info: successfully set certificate verify locations:
== Info:   CAfile: /etc/pki/tls/certs/ca-bundle.crt
  CApath: none
== Info: TLSv1.3 (OUT), TLS handshake, Client hello (1):
== Info: CONNECT phase completed!
== Info: CONNECT phase completed!
== Info: TLSv1.3 (IN), TLS handshake, Server hello (2):
== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, Encrypted Extensions (8):
== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, Certificate (11):
== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, CERT verify (15):
== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, Finished (20):
== Info: TLSv1.3 (OUT), TLS change cipher, Change cipher spec (1):
== Info: TLSv1.3 (OUT), TLS handshake, [no content] (0):
== Info: TLSv1.3 (OUT), TLS handshake, Finished (20):
== Info: SSL connection using TLSv1.3 / TLS_AES_256_GCM_SHA384
== Info: ALPN, server accepted to use http/1.1
== Info: Server certificate:
== Info:  subject: serialNumber=402 968 655 00165; jurisdictionC=FR; businessCategory=Private Organization; C=FR; ST=▒le-de-France; O=Devoteam; CN=rvrparad.devoteam.com
== Info:  start date: Dec 16 00:00:00 2021 GMT
== Info:  expire date: Jan 16 23:59:59 2023 GMT
== Info:  issuer: C=GB; ST=Greater Manchester; L=Salford; O=Sectigo Limited; CN=Sectigo RSA Extended Validation Secure Server CA
== Info:  SSL certificate verify ok.
== Info: TLSv1.3 (OUT), TLS app data, [no content] (0):
=> Send header: GET /gericau/login-form.jsp HTTP/1.1
Host: rvrparad.devoteam.com
Accept: */*

== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
== Info: TLSv1.3 (IN), TLS handshake, [no content] (0):
== Info: TLSv1.3 (IN), TLS handshake, Newsession Ticket (4):
== Info: TLSv1.3 (IN), TLS app data, [no content] (0):
=> Recv header: HTTP/1.1 200
=> Recv header: Date: Thu, 04 Aug 2022 09:19:40 GMT
=> Recv header: Server: Apache
=> Recv header: Strict-Transport-Security: max-age=31536000; includeSubDomains; preload
=> Recv header: X-Frame-Options: SAMEORIGIN
=> Recv header: X-XSS-Protection: 1; mode=block
=> Recv header: X-Content-Type-Options: nosniff
=> Recv header: Content-Security-Policy: default-src 'self' 'unsafe-inline' 'unsafe-eval'; img-src 'self' data: blob:
=> Recv header: Content-Type: text/html;charset=iso-8859-15
=> Recv header: Set-Cookie: JSESSIONID=DE4BDD19AA4C396C829D8B7EB8BD7200; Path=/gericau; Secure; HttpOnly
=> Recv header: Vary: Accept-Encoding
=> Recv header: X-Robots-Tag: noindex
=> Recv header: Transfer-Encoding: chunked
=> Recv header:
=> Recv data: 2a




















== Info: TLSv1.3 (IN), TLS app data, [no content] (0):
=> Recv data: 5a



<html lang="fr">
<!-- Application du theme par defaut -->



        <head>
                <title>
== Info: TLSv1.3 (IN), TLS app data, [no content] (0):
=> Recv data: 20

                Connexion
        </title>


== Info: TLSv1.3 (IN), TLS alert, [no content] (0):
== Info: TLSv1.3 (IN), TLS alert, close notify (256):
== Info: transfer closed with outstanding read data remaining
== Info: Closing connection 0
== Info: TLSv1.3 (OUT), TLS alert, [no content] (0):
== Info: TLSv1.3 (OUT), TLS alert, close notify (256):

70-escape-unescape.t fails on CloudLinux

t/70-escape-unescape.t ..................... 1/24 
#   Failed test 'escape'
#   at t/70-escape-unescape.t line 49.
#          got: '~-_.'
#     expected: '%7E%2D%5F%2E'
# Looks like you failed 1 test of 24.
t/70-escape-unescape.t ..................... Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/24 subtests 

Cannot easily install Net::Curl on Windows

Could you provide (more explicit) details on how to install/build Net::Curl on Windows? ActiveState does not provide a compiled binary and installing via CPAN does not work out-of-the-box either. Both fail on the libcurl requirement. Installing libcurl on Linux is easy, but getting everything built and linked correctly on Windows is more of a hassle.

So it would be great if you could add the steps to setup libcurl as required by Net::Curl. Thanks!

TIMESTAMP format mismatch in test

Linux 4.11.8-2-default [openSUSE Tumbleweed 20170726]
This is perl 5, version 26, subversion 0 (v5.26.0) built for x86_64-linux-thread-multi-ld
LANG=en_US.UTF-8
libcurl4-7.54.1-1.2.x86_64
ok 2406 - LIBCURL_TIMESTAMP is defined
not ok 2407 - LIBCURL_TIMESTAMP is a string
#   Failed test 'LIBCURL_TIMESTAMP is a string'
#   at t/01-constants.t line 68.
#                   '2017-06-14'
#     doesn't match '(?^i:[a-z])'
ok 2408 - LIBCURL_VERSION constant can be retrieved

FWIW tests PASS in

Linux 4.4.74-18.20-default [openSUSE Leap 42.2]
This is perl 5, version 26, subversion 0 (v5.26.0) built for x86_64-linux-thread-multi-ld
LANG=en_US.UTF-8
libcurl4-7.37.0-16.3.1.x86_64

Note that the LC_TIME has been modified (on both), as M/D/Y formats are unacceptable. Does that influence these tests? If so, I cannot explain the fail, as both boxes have the same fixed LC_TIME

$ locale -ck LC_TIME
LC_TIME
abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat"
day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday"
abmon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec"
mon="January;February;March;April;May;June;July;August;September;October;November;December"
am_pm="AM;PM"
d_t_fmt="%a %d %b %Y %R %Z"
d_fmt="%d-%m-%Y"
t_fmt="%R"
t_fmt_ampm="%H:%M:%S"
era=
era_year=""
era_d_fmt=""
alt_digits=
era_d_t_fmt=""
era_t_fmt=""
time-era-num-entries=0
time-era-entries="S"
week-ndays=7
week-1stday=19971130
week-1stweek=1
first_weekday=1
first_workday=2
cal_direction=1
timezone=""
date_fmt="%a %e %b %Y %H:%M:%S"
time-codeset="UTF-8"
$ locale -ck LC_TIME
LC_TIME
abday="Sun;Mon;Tue;Wed;Thu;Fri;Sat"
day="Sunday;Monday;Tuesday;Wednesday;Thursday;Friday;Saturday"
abmon="Jan;Feb;Mar;Apr;May;Jun;Jul;Aug;Sep;Oct;Nov;Dec"
mon="January;February;March;April;May;June;July;August;September;October;November;December"
am_pm="AM;PM"
d_t_fmt="%a %d %b %Y %R %Z"
d_fmt="%d-%m-%Y"
t_fmt="%R"
t_fmt_ampm="%H:%M:%S"
era=
era_year=""
era_d_fmt=""
alt_digits=
era_d_t_fmt=""
era_t_fmt=""
time-era-num-entries=0
time-era-entries="S"
week-ndays=7
week-1stday=19971130
week-1stweek=7
first_weekday=1
first_workday=2
cal_direction=1
timezone=""
date_fmt="%a %e %b %Y %H:%M:%S"
time-codeset="UTF-8"

Slight versioning bug in Net::Curl + Net::Curl::Compat

Net::Curl sets it's version as 0.32 which is correct.

Net::Curl::Compat sets it's version to 4.15 which causes problems, as it's part of the Net::Curl module.

So in CPANPLUS (haven't tried CPAN) installing Net::Curl then shows Net::Curl::Compat has a more recent version available.

Installing Net::Curl::Compat then reduces Net::Curl to version 0.31 which starts the loop all over again. Unsure why this occurs and makes keeping this module up to date... a bit of work...

Since Net::Curl::Compat is part of Net::Curl maybe a solution is for Compat.pm to just inherit the version number from the parent package.

Failing test: old-10errbuf.t

I'm trying to install the package via CPAN and I get the following output in the build.log:

t/old-09times.t ............................ ok

#   Failed test 'Reading redirected STDERR'
#   at t/old-10errbuf.t line 45.
#                   '* Closing connection -1
# '
#     doesn't match '(?^x:^\*\s+(?:
#     Protocol \s badprotocol \s not \s supported \s or \s disabled \s in \s libcurl |
#     Unsupported \s protocol: \s badprotocol |
#     Rebuilt \s URL \s to: \s badprotocol://.+
# )$)'
# Looks like you failed 1 test of 13.
t/old-10errbuf.t ........................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/13 subtests 

I'm no Perl expert, I just need to install this as a dependency for a web application. Should I install it with --force so the tests will be skipped? I've read in the README sometimes tests fail with no good reason but My machine has an excellent internet connection and fast processor so there shouldn't be a problem because of this. Additionally, even if I try to run the tests again I get the failure at the same test file.

Thanks.

curl 7.87.0 build breakage

The latest release does not build against curl 7.87.0.

In file included from Curl.xs:455:
curl-Form-c.inc: In function 'perl_curl_form_delete':
curl-Form-c.inc:43:17: warning: 'curl_formfree' is deprecated: since 7.56.0. Use curl_mime_free() [-Wdeprecated-declarations]
   43 |                 curl_formfree( form->post );
      |                 ^~~~~~~~~~~~~
In file included from Curl.xs:20:
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2606:1: note: declared here
 2606 | curl_formfree(struct curl_httppost *form);
      | ^~~~~~~~~~~~~
In file included from Curl.xs:458:
Curl_Easy_setopt.c: In function 'perl_curl_easy_setopt_function':
Curl_Easy_setopt.c:46:17: warning: 'CURLOPT_PROGRESSFUNCTION' is deprecated: since 7.32.0. Use CURLOPT_XFERINFOFUNCTION [-Wdeprecated-declarations]
   46 |                 case CURLOPT_PROGRESSFUNCTION:
      |                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1295:21: note: declared here
 1295 |   CURLOPTDEPRECATED(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
Curl_Easy_setopt.c:65:17: warning: 'CURLOPT_IOCTLFUNCTION' is deprecated: since 7.18.0. Use CURLOPT_SEEKFUNCTION [-Wdeprecated-declarations]
   65 |                 case CURLOPT_IOCTLFUNCTION:
      |                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1580:21: note: declared here
 1580 |   CURLOPTDEPRECATED(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130,
      |                     ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
Curl_Easy_setopt.c:67:25: warning: 'CURLOPT_IOCTLDATA' is deprecated: since 7.18.0. Use CURLOPT_SEEKDATA [-Wdeprecated-declarations]
   67 |                         dataopt = CURLOPT_IOCTLDATA;
      |                         ^~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1582:21: note: declared here
 1582 |   CURLOPTDEPRECATED(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131,
      |                     ^~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
Curl_Easy_setopt.c: In function 'perl_curl_easy_setopt_functiondata':
Curl_Easy_setopt.c:206:17: warning: 'CURLOPT_IOCTLDATA' is deprecated: since 7.18.0. Use CURLOPT_SEEKDATA [-Wdeprecated-declarations]
  206 |                 case CURLOPT_IOCTLDATA:
      |                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1582:21: note: declared here
 1582 |   CURLOPTDEPRECATED(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131,
      |                     ^~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
Curl_Easy_setopt.c: In function 'perl_curl_easy_setopt_object':
Curl_Easy_setopt.c:306:17: warning: 'CURLOPT_HTTPPOST' is deprecated: since 7.56.0. Use CURLOPT_MIMEPOST [-Wdeprecated-declarations]
  306 |                 case CURLOPT_HTTPPOST:
      |                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1195:21: note: declared here
 1195 |   CURLOPTDEPRECATED(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24,
      |                     ^~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./curl-Form-xs.inc: In function 'XS_Net__Curl__Form_add':
./curl-Form-xs.inc:166:33: warning: 'CURLFORM_PTRNAME' is deprecated: since 7.56.0. Use curl_mime_name() [-Wdeprecated-declarations]
  166 |                                 case CURLFORM_PTRNAME:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2496:3: note: declared here
 2496 |   CURLFORM_PTRNAME         CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
      |   ^~~~~~~~~~~~~~~~
./curl-Form-xs.inc:167:41: warning: 'CURLFORM_COPYNAME' is deprecated: since 7.56.0. Use curl_mime_name() [-Wdeprecated-declarations]
  167 |                                         option = CURLFORM_COPYNAME;
      |                                         ^~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2495:3: note: declared here
 2495 |   CURLFORM_COPYNAME        CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
      |   ^~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:168:33: warning: 'CURLFORM_COPYNAME' is deprecated: since 7.56.0. Use curl_mime_name() [-Wdeprecated-declarations]
  168 |                                 case CURLFORM_COPYNAME:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2495:3: note: declared here
 2495 |   CURLFORM_COPYNAME        CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
      |   ^~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:169:41: warning: 'CURLFORM_NAMELENGTH' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  169 |                                         option_len = CURLFORM_NAMELENGTH;
      |                                         ^~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2497:3: note: declared here
 2497 |   CURLFORM_NAMELENGTH      CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:173:33: warning: 'CURLFORM_PTRCONTENTS' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  173 |                                 case CURLFORM_PTRCONTENTS:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2499:3: note: declared here
 2499 |   CURLFORM_PTRCONTENTS     CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:174:41: warning: 'CURLFORM_COPYCONTENTS' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  174 |                                         option = CURLFORM_COPYCONTENTS;
      |                                         ^~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2498:3: note: declared here
 2498 |   CURLFORM_COPYCONTENTS    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:175:33: warning: 'CURLFORM_COPYCONTENTS' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  175 |                                 case CURLFORM_COPYCONTENTS:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2498:3: note: declared here
 2498 |   CURLFORM_COPYCONTENTS    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:176:41: warning: 'CURLFORM_CONTENTSLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  176 |                                         option_len = CURLFORM_CONTENTSLENGTH;
      |                                         ^~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2500:3: note: declared here
 2500 |   CURLFORM_CONTENTSLENGTH  CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:180:33: warning: 'CURLFORM_BUFFERPTR' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  180 |                                 case CURLFORM_BUFFERPTR:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2507:3: note: declared here
 2507 |   CURLFORM_BUFFERPTR       CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:181:41: warning: 'CURLFORM_BUFFERLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  181 |                                         option_len = CURLFORM_BUFFERLENGTH;
      |                                         ^~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2508:3: note: declared here
 2508 |   CURLFORM_BUFFERLENGTH    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:200:33: warning: 'CURLFORM_NAMELENGTH' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  200 |                                 case CURLFORM_NAMELENGTH:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2497:3: note: declared here
 2497 |   CURLFORM_NAMELENGTH      CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:201:33: warning: 'CURLFORM_CONTENTSLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  201 |                                 case CURLFORM_CONTENTSLENGTH:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2500:3: note: declared here
 2500 |   CURLFORM_CONTENTSLENGTH  CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:202:33: warning: 'CURLFORM_BUFFERLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
  202 |                                 case CURLFORM_BUFFERLENGTH:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2508:3: note: declared here
 2508 |   CURLFORM_BUFFERLENGTH    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:213:33: warning: 'CURLFORM_FILECONTENT' is deprecated: since 7.56.0. Use curl_mime_data_cb() [-Wdeprecated-declarations]
  213 |                                 case CURLFORM_FILECONTENT:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2501:3: note: declared here
 2501 |   CURLFORM_FILECONTENT     CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:214:33: warning: 'CURLFORM_FILE' is deprecated: since 7.56.0. Use curl_mime_filedata() [-Wdeprecated-declarations]
  214 |                                 case CURLFORM_FILE:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2504:3: note: declared here
 2504 |   CURLFORM_FILE            CURL_DEPRECATED(7.56.0, "Use curl_mime_filedata()"),
      |   ^~~~~~~~~~~~~
./curl-Form-xs.inc:215:33: warning: 'CURLFORM_CONTENTTYPE' is deprecated: since 7.56.0. Use curl_mime_type() [-Wdeprecated-declarations]
  215 |                                 case CURLFORM_CONTENTTYPE:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2510:3: note: declared here
 2510 |   CURLFORM_CONTENTTYPE     CURL_DEPRECATED(7.56.0, "Use curl_mime_type()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:216:33: warning: 'CURLFORM_FILENAME' is deprecated: since 7.56.0. Use curl_mime_filename() [-Wdeprecated-declarations]
  216 |                                 case CURLFORM_FILENAME:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2512:3: note: declared here
 2512 |   CURLFORM_FILENAME        CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
      |   ^~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:217:33: warning: 'CURLFORM_BUFFER' is deprecated: since 7.56.0. Use curl_mime_filename() [-Wdeprecated-declarations]
  217 |                                 case CURLFORM_BUFFER:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2506:3: note: declared here
 2506 |   CURLFORM_BUFFER          CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
      |   ^~~~~~~~~~~~~~~
./curl-Form-xs.inc:223:33: warning: 'CURLFORM_CONTENTHEADER' is deprecated: since 7.56.0. Use curl_mime_headers() [-Wdeprecated-declarations]
  223 |                                 case CURLFORM_CONTENTHEADER:
      |                                 ^~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2511:3: note: declared here
 2511 |   CURLFORM_CONTENTHEADER   CURL_DEPRECATED(7.56.0, "Use curl_mime_headers()"),
      |   ^~~~~~~~~~~~~~~~~~~~~~
./curl-Form-xs.inc:243:17: warning: 'curl_formadd' is deprecated: since 7.56.0. Use curl_mime_init() [-Wdeprecated-declarations]
  243 |                 ret = curl_formadd( &form->post, &form->last,
      |                 ^~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2570:1: note: declared here
 2570 | curl_formadd(struct curl_httppost **httppost,
      | ^~~~~~~~~~~~
./curl-Form-xs.inc:244:25: warning: 'CURLFORM_ARRAY' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  244 |                         CURLFORM_ARRAY, farray, CURLFORM_END );
      |                         ^~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2502:3: note: declared here
 2502 |   CURLFORM_ARRAY           CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~
./curl-Form-xs.inc:248:17: warning: 'CURL_FORMADD_OK' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  248 |                 if ( ret != CURL_FORMADD_OK )
      |                 ^~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2546:3: note: declared here
 2546 |   CURL_FORMADD_OK             CURL_DEPRECATED(7.56.0, ""), /* 1st, no error */
      |   ^~~~~~~~~~~~~~~
./curl-Form-xs.inc: In function 'XS_Net__Curl__Form_get':
./curl-Form-xs.inc:263:25: warning: 'curl_formget' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  263 |                         curl_formget( form->post, output, cb_form_get_sv );
      |                         ^~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2596:1: note: declared here
 2596 | curl_formget(struct curl_httppost *form, void *arg,
      | ^~~~~~~~~~~~
./curl-Form-xs.inc:280:33: warning: 'curl_formget' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  280 |                                 curl_formget( form->post, handle, cb_form_get_io );
      |                                 ^~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2596:1: note: declared here
 2596 | curl_formget(struct curl_httppost *form, void *arg,
      | ^~~~~~~~~~~~
./curl-Form-xs.inc:282:33: warning: 'curl_formget' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  282 |                                 curl_formget( form->post, output, cb_form_get_sv );
      |                                 ^~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2596:1: note: declared here
 2596 | curl_formget(struct curl_httppost *form, void *arg,
      | ^~~~~~~~~~~~
./curl-Form-xs.inc:296:25: warning: 'curl_formget' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
  296 |                         curl_formget( form->post, form, cb_form_get_code );
      |                         ^~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2596:1: note: declared here
 2596 | curl_formget(struct curl_httppost *form, void *arg,
      | ^~~~~~~~~~~~
./curl-Easy-xs.inc: In function 'XS_Net__Curl__Easy_duphandle':
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:46:7: warning: 'CURLOPT_PROGRESSFUNCTION' is deprecated: since 7.32.0. Use CURLOPT_XFERINFOFUNCTION [-Wdeprecated-declarations]
   46 |       _Pragma("GCC diagnostic pop")
      |       ^~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:46:7: note: in definition of macro 'CURL_IGNORE_DEPRECATION'
   46 |       _Pragma("GCC diagnostic pop")
      |       ^~~~~~~
./curl-Easy-xs.inc:308:25: note: in expansion of macro 'curl_easy_setopt'
  308 |                         curl_easy_setopt( clone->handle, CURLOPT_PROGRESSFUNCTION, cb_easy_progress );
      |                         ^~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1295:21: note: declared here
 1295 |   CURLOPTDEPRECATED(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:46:7: warning: 'CURLOPT_HTTPPOST' is deprecated: since 7.56.0. Use CURLOPT_MIMEPOST [-Wdeprecated-declarations]
   46 |       _Pragma("GCC diagnostic pop")
      |       ^~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:46:7: note: in definition of macro 'CURL_IGNORE_DEPRECATION'
   46 |       _Pragma("GCC diagnostic pop")
      |       ^~~~~~~
./curl-Easy-xs.inc:387:25: note: in expansion of macro 'curl_easy_setopt'
  387 |                         curl_easy_setopt( clone->handle, CURLOPT_HTTPPOST, form->post );
      |                         ^~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1195:21: note: declared here
 1195 |   CURLOPTDEPRECATED(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24,
      |                     ^~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-form-xs.inc: In function 'boot_Net__Curl':
./const-form-xs.inc:6:25: warning: 'CURLFORM_ARRAY' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
    6 |                         { "CURLFORM_ARRAY", 14, CURLFORM_ARRAY },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2502:3: note: declared here
 2502 |   CURLFORM_ARRAY           CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~
./const-form-xs.inc:7:25: warning: 'CURLFORM_BUFFER' is deprecated: since 7.56.0. Use curl_mime_filename() [-Wdeprecated-declarations]
    7 |                         { "CURLFORM_BUFFER", 15, CURLFORM_BUFFER },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2506:3: note: declared here
 2506 |   CURLFORM_BUFFER          CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
      |   ^~~~~~~~~~~~~~~
./const-form-xs.inc:8:25: warning: 'CURLFORM_BUFFERLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
    8 |                         { "CURLFORM_BUFFERLENGTH", 21, CURLFORM_BUFFERLENGTH },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2508:3: note: declared here
 2508 |   CURLFORM_BUFFERLENGTH    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:9:25: warning: 'CURLFORM_BUFFERPTR' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
    9 |                         { "CURLFORM_BUFFERPTR", 18, CURLFORM_BUFFERPTR },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2507:3: note: declared here
 2507 |   CURLFORM_BUFFERPTR       CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~
./const-form-xs.inc:10:25: warning: 'CURLFORM_CONTENTHEADER' is deprecated: since 7.56.0. Use curl_mime_headers() [-Wdeprecated-declarations]
   10 |                         { "CURLFORM_CONTENTHEADER", 22, CURLFORM_CONTENTHEADER },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2511:3: note: declared here
 2511 |   CURLFORM_CONTENTHEADER   CURL_DEPRECATED(7.56.0, "Use curl_mime_headers()"),
      |   ^~~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:11:25: warning: 'CURLFORM_CONTENTLEN' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
   11 |                         { "CURLFORM_CONTENTLEN", 19, CURLFORM_CONTENTLEN },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2517:3: note: declared here
 2517 |   CURLFORM_CONTENTLEN  /* added in 7.46.0, provide a curl_off_t length */
      |   ^~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:12:25: warning: 'CURLFORM_CONTENTSLENGTH' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
   12 |                         { "CURLFORM_CONTENTSLENGTH", 23, CURLFORM_CONTENTSLENGTH },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2500:3: note: declared here
 2500 |   CURLFORM_CONTENTSLENGTH  CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:13:25: warning: 'CURLFORM_CONTENTTYPE' is deprecated: since 7.56.0. Use curl_mime_type() [-Wdeprecated-declarations]
   13 |                         { "CURLFORM_CONTENTTYPE", 20, CURLFORM_CONTENTTYPE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2510:3: note: declared here
 2510 |   CURLFORM_CONTENTTYPE     CURL_DEPRECATED(7.56.0, "Use curl_mime_type()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:14:25: warning: 'CURLFORM_COPYCONTENTS' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
   14 |                         { "CURLFORM_COPYCONTENTS", 21, CURLFORM_COPYCONTENTS },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2498:3: note: declared here
 2498 |   CURLFORM_COPYCONTENTS    CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:15:25: warning: 'CURLFORM_COPYNAME' is deprecated: since 7.56.0. Use curl_mime_name() [-Wdeprecated-declarations]
   15 |                         { "CURLFORM_COPYNAME", 17, CURLFORM_COPYNAME },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2495:3: note: declared here
 2495 |   CURLFORM_COPYNAME        CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
      |   ^~~~~~~~~~~~~~~~~
./const-form-xs.inc:17:25: warning: 'CURLFORM_FILE' is deprecated: since 7.56.0. Use curl_mime_filedata() [-Wdeprecated-declarations]
   17 |                         { "CURLFORM_FILE", 13, CURLFORM_FILE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2504:3: note: declared here
 2504 |   CURLFORM_FILE            CURL_DEPRECATED(7.56.0, "Use curl_mime_filedata()"),
      |   ^~~~~~~~~~~~~
./const-form-xs.inc:18:25: warning: 'CURLFORM_FILECONTENT' is deprecated: since 7.56.0. Use curl_mime_data_cb() [-Wdeprecated-declarations]
   18 |                         { "CURLFORM_FILECONTENT", 20, CURLFORM_FILECONTENT },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2501:3: note: declared here
 2501 |   CURLFORM_FILECONTENT     CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:19:25: warning: 'CURLFORM_FILENAME' is deprecated: since 7.56.0. Use curl_mime_filename() [-Wdeprecated-declarations]
   19 |                         { "CURLFORM_FILENAME", 17, CURLFORM_FILENAME },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2512:3: note: declared here
 2512 |   CURLFORM_FILENAME        CURL_DEPRECATED(7.56.0, "Use curl_mime_filename()"),
      |   ^~~~~~~~~~~~~~~~~
./const-form-xs.inc:20:25: warning: 'CURLFORM_NAMELENGTH' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   20 |                         { "CURLFORM_NAMELENGTH", 19, CURLFORM_NAMELENGTH },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2497:3: note: declared here
 2497 |   CURLFORM_NAMELENGTH      CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:21:25: warning: 'CURLFORM_NOTHING' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   21 |                         { "CURLFORM_NOTHING", 16, CURLFORM_NOTHING },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2494:3: note: declared here
 2494 |   CURLFORM_NOTHING         CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~
./const-form-xs.inc:22:25: warning: 'CURLFORM_PTRCONTENTS' is deprecated: since 7.56.0. Use curl_mime_data() [-Wdeprecated-declarations]
   22 |                         { "CURLFORM_PTRCONTENTS", 20, CURLFORM_PTRCONTENTS },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2499:3: note: declared here
 2499 |   CURLFORM_PTRCONTENTS     CURL_DEPRECATED(7.56.0, "Use curl_mime_data()"),
      |   ^~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:23:25: warning: 'CURLFORM_PTRNAME' is deprecated: since 7.56.0. Use curl_mime_name() [-Wdeprecated-declarations]
   23 |                         { "CURLFORM_PTRNAME", 16, CURLFORM_PTRNAME },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2496:3: note: declared here
 2496 |   CURLFORM_PTRNAME         CURL_DEPRECATED(7.56.0, "Use curl_mime_name()"),
      |   ^~~~~~~~~~~~~~~~
./const-form-xs.inc:24:25: warning: 'CURLFORM_STREAM' is deprecated: since 7.56.0. Use curl_mime_data_cb() [-Wdeprecated-declarations]
   24 |                         { "CURLFORM_STREAM", 15, CURLFORM_STREAM },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2516:3: note: declared here
 2516 |   CURLFORM_STREAM          CURL_DEPRECATED(7.56.0, "Use curl_mime_data_cb()"),
      |   ^~~~~~~~~~~~~~~
./const-form-xs.inc:25:25: warning: 'CURL_FORMADD_DISABLED' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   25 |                         { "CURL_FORMADD_DISABLED", 21, CURL_FORMADD_DISABLED },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2555:3: note: declared here
 2555 |   CURL_FORMADD_DISABLED       CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:26:25: warning: 'CURL_FORMADD_ILLEGAL_ARRAY' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   26 |                         { "CURL_FORMADD_ILLEGAL_ARRAY", 26, CURL_FORMADD_ILLEGAL_ARRAY },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2553:3: note: declared here
 2553 |   CURL_FORMADD_ILLEGAL_ARRAY  CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:27:25: warning: 'CURL_FORMADD_INCOMPLETE' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   27 |                         { "CURL_FORMADD_INCOMPLETE", 23, CURL_FORMADD_INCOMPLETE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2552:3: note: declared here
 2552 |   CURL_FORMADD_INCOMPLETE     CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:28:25: warning: 'CURL_FORMADD_MEMORY' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   28 |                         { "CURL_FORMADD_MEMORY", 19, CURL_FORMADD_MEMORY },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2548:3: note: declared here
 2548 |   CURL_FORMADD_MEMORY         CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:29:25: warning: 'CURL_FORMADD_NULL' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   29 |                         { "CURL_FORMADD_NULL", 17, CURL_FORMADD_NULL },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2550:3: note: declared here
 2550 |   CURL_FORMADD_NULL           CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~
./const-form-xs.inc:30:25: warning: 'CURL_FORMADD_OK' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   30 |                         { "CURL_FORMADD_OK", 15, CURL_FORMADD_OK },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2546:3: note: declared here
 2546 |   CURL_FORMADD_OK             CURL_DEPRECATED(7.56.0, ""), /* 1st, no error */
      |   ^~~~~~~~~~~~~~~
./const-form-xs.inc:31:25: warning: 'CURL_FORMADD_OPTION_TWICE' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   31 |                         { "CURL_FORMADD_OPTION_TWICE", 25, CURL_FORMADD_OPTION_TWICE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2549:3: note: declared here
 2549 |   CURL_FORMADD_OPTION_TWICE   CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~
./const-form-xs.inc:32:25: warning: 'CURL_FORMADD_UNKNOWN_OPTION' is deprecated: since 7.56.0.  [-Wdeprecated-declarations]
   32 |                         { "CURL_FORMADD_UNKNOWN_OPTION", 27, CURL_FORMADD_UNKNOWN_OPTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2551:3: note: declared here
 2551 |   CURL_FORMADD_UNKNOWN_OPTION CURL_DEPRECATED(7.56.0, ""),
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:209:25: warning: 'CURLINFO_CONTENT_LENGTH_DOWNLOAD' is deprecated: since 7.55.0. Use CURLINFO_CONTENT_LENGTH_DOWNLOAD_T [-Wdeprecated-declarations]
  209 |                         { "CURLINFO_CONTENT_LENGTH_DOWNLOAD", 32, CURLINFO_CONTENT_LENGTH_DOWNLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2853:3: note: declared here
 2853 |   CURLINFO_CONTENT_LENGTH_DOWNLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:211:25: warning: 'CURLINFO_CONTENT_LENGTH_UPLOAD' is deprecated: since 7.55.0. Use CURLINFO_CONTENT_LENGTH_UPLOAD_T [-Wdeprecated-declarations]
  211 |                         { "CURLINFO_CONTENT_LENGTH_UPLOAD", 30, CURLINFO_CONTENT_LENGTH_UPLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2858:3: note: declared here
 2858 |   CURLINFO_CONTENT_LENGTH_UPLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:232:25: warning: 'CURLINFO_LASTSOCKET' is deprecated: since 7.45.0. Use CURLINFO_ACTIVESOCKET [-Wdeprecated-declarations]
  232 |                         { "CURLINFO_LASTSOCKET", 19, CURLINFO_LASTSOCKET },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2875:3: note: declared here
 2875 |   CURLINFO_LASTSOCKET  CURL_DEPRECATED(7.45.0, "Use CURLINFO_ACTIVESOCKET")
      |   ^~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:248:25: warning: 'CURLINFO_PROTOCOL' is deprecated: since 7.85.0. Use CURLINFO_SCHEME [-Wdeprecated-declarations]
  248 |                         { "CURLINFO_PROTOCOL", 17, CURLINFO_PROTOCOL },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2896:3: note: declared here
 2896 |   CURLINFO_PROTOCOL    CURL_DEPRECATED(7.85.0, "Use CURLINFO_SCHEME")
      |   ^~~~~~~~~~~~~~~~~
./const-easy-xs.inc:266:25: warning: 'CURLINFO_SIZE_DOWNLOAD' is deprecated: since 7.55.0. Use CURLINFO_SIZE_DOWNLOAD_T [-Wdeprecated-declarations]
  266 |                         { "CURLINFO_SIZE_DOWNLOAD", 22, CURLINFO_SIZE_DOWNLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2836:3: note: declared here
 2836 |   CURLINFO_SIZE_DOWNLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:268:25: warning: 'CURLINFO_SIZE_UPLOAD' is deprecated: since 7.55.0. Use CURLINFO_SIZE_UPLOAD_T [-Wdeprecated-declarations]
  268 |                         { "CURLINFO_SIZE_UPLOAD", 20, CURLINFO_SIZE_UPLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2833:3: note: declared here
 2833 |   CURLINFO_SIZE_UPLOAD CURL_DEPRECATED(7.55.0, "Use CURLINFO_SIZE_UPLOAD_T")
      |   ^~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:272:25: warning: 'CURLINFO_SPEED_DOWNLOAD' is deprecated: since 7.55.0. Use CURLINFO_SPEED_DOWNLOAD_T [-Wdeprecated-declarations]
  272 |                         { "CURLINFO_SPEED_DOWNLOAD", 23, CURLINFO_SPEED_DOWNLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2840:3: note: declared here
 2840 |   CURLINFO_SPEED_DOWNLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:274:25: warning: 'CURLINFO_SPEED_UPLOAD' is deprecated: since 7.55.0. Use CURLINFO_SPEED_UPLOAD_T [-Wdeprecated-declarations]
  274 |                         { "CURLINFO_SPEED_UPLOAD", 21, CURLINFO_SPEED_UPLOAD },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2844:3: note: declared here
 2844 |   CURLINFO_SPEED_UPLOAD
      |   ^~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:284:25: warning: 'CURLINFO_TLS_SESSION' is deprecated: since 7.48.0. Use CURLINFO_TLS_SSL_PTR [-Wdeprecated-declarations]
  284 |                         { "CURLINFO_TLS_SESSION", 20, CURLINFO_TLS_SESSION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:2890:3: note: declared here
 2890 |   CURLINFO_TLS_SESSION CURL_DEPRECATED(7.48.0, "Use CURLINFO_TLS_SSL_PTR")
      |   ^~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:309:52: error: 'CURLOPTDEPRECATED' undeclared (first use in this function); did you mean 'CURLOPT_PRIVATE'?
  309 |                         { "CURLOPTDEPRECATED", 17, CURLOPTDEPRECATED },
      |                                                    ^~~~~~~~~~~~~~~~~
      |                                                    CURLOPT_PRIVATE
./const-easy-xs.inc:309:52: note: each undeclared identifier is reported only once for each function it appears in
./const-easy-xs.inc:344:25: warning: 'CURLOPT_CONV_FROM_NETWORK_FUNCTION' is deprecated: since 7.82.0. Serves no purpose anymore [-Wdeprecated-declarations]
  344 |                         { "CURLOPT_CONV_FROM_NETWORK_FUNCTION", 34, CURLOPT_CONV_FROM_NETWORK_FUNCTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1622:21: note: declared here
 1622 |   CURLOPTDEPRECATED(CURLOPT_CONV_FROM_NETWORK_FUNCTION,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:345:25: warning: 'CURLOPT_CONV_FROM_UTF8_FUNCTION' is deprecated: since 7.82.0. Serves no purpose anymore [-Wdeprecated-declarations]
  345 |                         { "CURLOPT_CONV_FROM_UTF8_FUNCTION", 31, CURLOPT_CONV_FROM_UTF8_FUNCTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1635:21: note: declared here
 1635 |   CURLOPTDEPRECATED(CURLOPT_CONV_FROM_UTF8_FUNCTION,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:346:25: warning: 'CURLOPT_CONV_TO_NETWORK_FUNCTION' is deprecated: since 7.82.0. Serves no purpose anymore [-Wdeprecated-declarations]
  346 |                         { "CURLOPT_CONV_TO_NETWORK_FUNCTION", 32, CURLOPT_CONV_TO_NETWORK_FUNCTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1628:21: note: declared here
 1628 |   CURLOPTDEPRECATED(CURLOPT_CONV_TO_NETWORK_FUNCTION,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:368:25: warning: 'CURLOPT_DNS_USE_GLOBAL_CACHE' is deprecated: since 7.11.1. Use CURLOPT_SHARE [-Wdeprecated-declarations]
  368 |                         { "CURLOPT_DNS_USE_GLOBAL_CACHE", 28, CURLOPT_DNS_USE_GLOBAL_CACHE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1424:21: note: declared here
 1424 |   CURLOPTDEPRECATED(CURLOPT_DNS_USE_GLOBAL_CACHE, CURLOPTTYPE_LONG, 91,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:373:25: warning: 'CURLOPT_EGDSOCKET' is deprecated: since 7.84.0. Serves no purpose anymore [-Wdeprecated-declarations]
  373 |                         { "CURLOPT_EGDSOCKET", 17, CURLOPT_EGDSOCKET },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1368:21: note: declared here
 1368 |   CURLOPTDEPRECATED(CURLOPT_EGDSOCKET, CURLOPTTYPE_STRINGPOINT, 77,
      |                     ^~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:418:25: warning: 'CURLOPT_HTTPPOST' is deprecated: since 7.56.0. Use CURLOPT_MIMEPOST [-Wdeprecated-declarations]
  418 |                         { "CURLOPT_HTTPPOST", 16, CURLOPT_HTTPPOST },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1195:21: note: declared here
 1195 |   CURLOPTDEPRECATED(CURLOPT_HTTPPOST, CURLOPTTYPE_OBJECTPOINT, 24,
      |                     ^~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:430:25: warning: 'CURLOPT_IOCTLDATA' is deprecated: since 7.18.0. Use CURLOPT_SEEKDATA [-Wdeprecated-declarations]
  430 |                         { "CURLOPT_IOCTLDATA", 17, CURLOPT_IOCTLDATA },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1582:21: note: declared here
 1582 |   CURLOPTDEPRECATED(CURLOPT_IOCTLDATA, CURLOPTTYPE_CBPOINT, 131,
      |                     ^~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:431:25: warning: 'CURLOPT_IOCTLFUNCTION' is deprecated: since 7.18.0. Use CURLOPT_SEEKFUNCTION [-Wdeprecated-declarations]
  431 |                         { "CURLOPT_IOCTLFUNCTION", 21, CURLOPT_IOCTLFUNCTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1580:21: note: declared here
 1580 |   CURLOPTDEPRECATED(CURLOPT_IOCTLFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 130,
      |                     ^~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:486:25: warning: 'CURLOPT_PROGRESSFUNCTION' is deprecated: since 7.32.0. Use CURLOPT_XFERINFOFUNCTION [-Wdeprecated-declarations]
  486 |                         { "CURLOPT_PROGRESSFUNCTION", 24, CURLOPT_PROGRESSFUNCTION },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1295:21: note: declared here
 1295 |   CURLOPTDEPRECATED(CURLOPT_PROGRESSFUNCTION, CURLOPTTYPE_FUNCTIONPOINT, 56,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:487:25: warning: 'CURLOPT_PROTOCOLS' is deprecated: since 7.85.0. Use CURLOPT_PROTOCOLS_STR [-Wdeprecated-declarations]
  487 |                         { "CURLOPT_PROTOCOLS", 17, CURLOPT_PROTOCOLS },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1749:21: note: declared here
 1749 |   CURLOPTDEPRECATED(CURLOPT_PROTOCOLS, CURLOPTTYPE_LONG, 181,
      |                     ^~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:522:25: warning: 'CURLOPT_PUT' is deprecated: since 7.12.1. Use CURLOPT_UPLOAD [-Wdeprecated-declarations]
  522 |                         { "CURLOPT_PUT", 11, CURLOPT_PUT },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1286:21: note: declared here
 1286 |   CURLOPTDEPRECATED(CURLOPT_PUT, CURLOPTTYPE_LONG, 54,
      |                     ^~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:525:25: warning: 'CURLOPT_RANDOM_FILE' is deprecated: since 7.84.0. Serves no purpose anymore [-Wdeprecated-declarations]
  525 |                         { "CURLOPT_RANDOM_FILE", 19, CURLOPT_RANDOM_FILE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1364:21: note: declared here
 1364 |   CURLOPTDEPRECATED(CURLOPT_RANDOM_FILE, CURLOPTTYPE_STRINGPOINT, 76,
      |                     ^~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:529:25: warning: 'CURLOPT_REDIR_PROTOCOLS' is deprecated: since 7.85.0. Use CURLOPT_REDIR_PROTOCOLS_STR [-Wdeprecated-declarations]
  529 |                         { "CURLOPT_REDIR_PROTOCOLS", 23, CURLOPT_REDIR_PROTOCOLS },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1755:21: note: declared here
 1755 |   CURLOPTDEPRECATED(CURLOPT_REDIR_PROTOCOLS, CURLOPTTYPE_LONG, 182,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:556:25: warning: 'CURLOPT_SOCKS5_GSSAPI_SERVICE' is deprecated: since 7.49.0. Use CURLOPT_PROXY_SERVICE_NAME [-Wdeprecated-declarations]
  556 |                         { "CURLOPT_SOCKS5_GSSAPI_SERVICE", 29, CURLOPT_SOCKS5_GSSAPI_SERVICE },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1738:21: note: declared here
 1738 |   CURLOPTDEPRECATED(CURLOPT_SOCKS5_GSSAPI_SERVICE,
      |                     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:584:25: warning: 'CURLOPT_SSL_ENABLE_NPN' is deprecated: since 7.86.0. Has no function [-Wdeprecated-declarations]
  584 |                         { "CURLOPT_SSL_ENABLE_NPN", 22, CURLOPT_SSL_ENABLE_NPN },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1901:21: note: declared here
 1901 |   CURLOPTDEPRECATED(CURLOPT_SSL_ENABLE_NPN, CURLOPTTYPE_LONG, 225,
      |                     ^~~~~~~~~~~~~~~~~~~~~~
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:1081:40: note: in definition of macro 'CURLOPTDEPRECATED'
 1081 | #define CURLOPTDEPRECATED(na,t,nu,v,m) na CURL_DEPRECATED(v,m) = t + nu
      |                                        ^~
./const-easy-xs.inc:744:25: warning: 'CURLSSLBACKEND_AXTLS' is deprecated: since 7.61.0.  [-Wdeprecated-declarations]
  744 |                         { "CURLSSLBACKEND_AXTLS", 20, CURLSSLBACKEND_AXTLS },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:168:3: note: declared here
  168 |   CURLSSLBACKEND_AXTLS                  CURL_DEPRECATED(7.61.0, "") = 10,
      |   ^~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:757:25: warning: 'CURLSSLBACKEND_POLARSSL' is deprecated: since 7.69.0.  [-Wdeprecated-declarations]
  757 |                         { "CURLSSLBACKEND_POLARSSL", 23, CURLSSLBACKEND_POLARSSL },
      |                         ^
/home/pbulk/build/www/p5-Net-Curl/work/.buildlink/include/curl/curl.h:164:3: note: declared here
  164 |   CURLSSLBACKEND_POLARSSL               CURL_DEPRECATED(7.69.0, "") = 6,
      |   ^~~~~~~~~~~~~~~~~~~~~~~
./const-easy-xs.inc:825:50: error: 'CURL_DEPRECATED' undeclared (first use in this function)
  825 |                         { "CURL_DEPRECATED", 15, CURL_DEPRECATED },
      |                                                  ^~~~~~~~~~~~~~~
./const-easy-xs.inc:853:58: error: 'CURL_IGNORE_DEPRECATION' undeclared (first use in this function)
  853 |                         { "CURL_IGNORE_DEPRECATION", 23, CURL_IGNORE_DEPRECATION },
      |                                                          ^~~~~~~~~~~~~~~~~~~~~~~
*** [Curl.o] Error code 1

Segfault (Ubuntu 12.04, libcurl 7.22.0)

Build log from git version, CPAN version has same effect.

~/perl-Net-Curl $ perl Makefile.PL && make && perl -Iblib/lib -Iblib/arch t/00-info.t
Found libcurl version 7.22.0
Use of uninitialized value $curl{"prefix"} in concatenation (.) or string at Makefile.PL line 217.
Reading /usr/include/curl/curl.h (cc -E   /usr/include/curl/curl.h)
Reading /usr/include/curl/multi.h (cc -E   /usr/include/curl/multi.h)
-> found 647 constants (should be 647)
Writing const-defenums-h.inc
Writing const-curl-xs.inc
Writing const-easy-xs.inc
Writing const-form-xs.inc
Writing const-multi-xs.inc
Writing const-share-xs.inc
Writing curl-Easy-c.inc
Writing curl-Easy-xs.inc
Writing curl-Form-c.inc
Writing curl-Form-xs.inc
Writing curl-Multi-c.inc
Writing curl-Multi-xs.inc
Writing curl-Share-c.inc
Writing curl-Share-xs.inc
Writing lib/Net/Curl/examples.pod
<- examples/01-curl-transport.pl
<- examples/02-multi-simple.pl
<- examples/03-multi-event.pl
<- examples/04-share-threads.pl
<- examples/05-irssi-downloader.pl
Writing lib/Net/Curl/Compat.pm
Writing Makefile for Net::Curl
Wide character in print at /home/n4kz/perl5/lib/perl5/ExtUtils/MakeMaker.pm line 1027.
Wide character in print at /home/n4kz/perl5/lib/perl5/ExtUtils/MakeMaker.pm line 1027.
Wide character in print at /home/n4kz/perl5/lib/perl5/ExtUtils/MakeMaker.pm line 1027.
Wide character in print at /home/n4kz/perl5/lib/perl5/ExtUtils/MakeMaker.pm line 1027.
Writing MYMETA.yml and MYMETA.json
Skip blib/lib/Net/Curl/Compat.pm (unchanged)
Skip blib/lib/Net/Curl.pm (unchanged)
Skip blib/lib/Net/Curl/Share.pm (unchanged)
Skip blib/lib/Net/Curl/Form.pm (unchanged)
Skip blib/lib/Net/Curl/examples.pod (unchanged)
Skip blib/lib/Net/Curl/Multi.pm (unchanged)
Skip blib/lib/Net/Curl/Easy.pm (unchanged)
cc -c   -Wall   -O2 -g   -DVERSION=\"0.29\" -DXS_VERSION=\"0.29\" -fPIC "-I/usr/lib/perl/5.14/CORE"   Curl.c
Curl.xs: In function ‘perl_curl_constant_add’:
Curl.xs:387:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
Curl.xs:388:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
Curl.xs:390:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
In file included from Curl.xs:429:0:
In function ‘perl_curl_easy_setopt_object’,
    inlined from ‘XS_Net__Curl__Easy_setopt’ at ./curl-Easy-xs.inc:379:32:
Curl_Easy_setopt.c:289:10: warning: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
Curl_Easy_setopt.c:289:10: warning: call to ‘_curl_easy_setopt_err_conv_cb’ declared with attribute warning: curl_easy_setopt expects a curl_conv_callback argument for this option [enabled by default]
Curl_Easy_setopt.c:295:5: warning: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
Curl_Easy_setopt.c:306:11: warning: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
Curl_Easy_setopt.c:306:11: warning: call to ‘_curl_easy_setopt_err_conv_cb’ declared with attribute warning: curl_easy_setopt expects a curl_conv_callback argument for this option [enabled by default]
Curl_Easy_setopt.c:313:5: warning: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
Curl_Easy_setopt.c:325:11: warning: call to ‘_curl_easy_setopt_err_long’ declared with attribute warning: curl_easy_setopt expects a long argument for this option [enabled by default]
Running Mkbootstrap for Net::Curl ()
chmod 644 Curl.bs
rm -f blib/arch/auto/Net/Curl/Curl.so
LD_RUN_PATH="/usr/lib/i386-linux-gnu" cc  -shared -O2 -g -L/usr/local/lib -fstack-protector Curl.o  -o blib/arch/auto/Net/Curl/Curl.so  \
       -lcurl   \

chmod 755 blib/arch/auto/Net/Curl/Curl.so
cp Curl.bs blib/arch/auto/Net/Curl/Curl.bs
chmod 644 blib/arch/auto/Net/Curl/Curl.bs
Manifying blib/man3/Net::Curl::Compat.3pm
Manifying blib/man3/Net::Curl.3pm
Manifying blib/man3/Net::Curl::Form.3pm
Manifying blib/man3/Net::Curl::Share.3pm
Manifying blib/man3/Net::Curl::Multi.3pm
Manifying blib/man3/Net::Curl::examples.3pm
Manifying blib/man3/Net::Curl::Easy.3pm
1..4
Segmentation fault (core dumped)

t/compat-10errbuf.t is flaky under darwin19.0

$ http_proxy= https_proxy= no_proxy= perl -Mblib t/compat-10errbuf.t
1..11
ok 1 - Curl session initialize returns something
ok 2 - Curl session looks like an object from the WWW::Curl::Easy module
ok 3 - Setting CURLOPT_NOPROGRESS
ok 4 - Setting CURLOPT_FOLLOWLOCATION
ok 5 - Setting CURLOPT_TIMEOUT
ok 6 - Setting CURLOPT_WRITEHEADER
ok 7 - Setting CURLOPT_FILE
ok 8 - Setting CURLOPT_URL
ok 9 - Setting CURLOPT_STDERR
ok 10 - Setting CURLOPT_URL succeeds, even with a bad protocol
ok 11 - Non-zero return code indicates the expected failure

$ perl -Mblib t/compat-10errbuf.t
1..11
ok 1 - Curl session initialize returns something
ok 2 - Curl session looks like an object from the WWW::Curl::Easy module
ok 3 - Setting CURLOPT_NOPROGRESS
ok 4 - Setting CURLOPT_FOLLOWLOCATION
ok 5 - Setting CURLOPT_TIMEOUT
ok 6 - Setting CURLOPT_WRITEHEADER
ok 7 - Setting CURLOPT_FILE
ok 8 - Setting CURLOPT_URL
ok 9 - Setting CURLOPT_STDERR
ok 10 - Setting CURLOPT_URL succeeds, even with a bad protocol
not ok 11 - Non-zero return code indicates the expected failure
#   Failed test 'Non-zero return code indicates the expected failure'
#   at t/compat-10errbuf.t line 50.
# Looks like you failed 1 test of 11.

$ perl -Mblib t/00-info.t
1..4
# libcurl
# version():
# 	libcurl/7.64.1 (SecureTransport) LibreSSL/2.8.3 zlib/1.2.11 nghttp2/1.39.2
# version_info():
# 	{age} = 4;
# 	{ares_num} = 0;
# 	{features} =
# 		| CURL_VERSION_IPV6 (1<<0)
# 		| CURL_VERSION_SSL (1<<2)
# 		| CURL_VERSION_LIBZ (1<<3)
# 		| CURL_VERSION_NTLM (1<<4)
# 		| CURL_VERSION_ASYNCHDNS (1<<7)
# 		| CURL_VERSION_SPNEGO (1<<8)
# 		| CURL_VERSION_LARGEFILE (1<<9)
# 		| CURL_VERSION_NTLM_WB (1<<15)
# 		| CURL_VERSION_HTTP2 (1<<16)
# 		| CURL_VERSION_GSSAPI (1<<17)
# 		| CURL_VERSION_KERBEROS5 (1<<18)
# 		| CURL_VERSION_UNIX_SOCKETS (1<<19)
# 		| CURL_VERSION_HTTPS_PROXY (1<<21)
# 		| CURL_VERSION_MULTI_SSL (1<<22);
# 	missing features =
# 		| CURL_VERSION_KERBEROS4 (1<<1)
# 		| CURL_VERSION_GSSNEGOTIATE (1<<5)
# 		| CURL_VERSION_DEBUG (1<<6)
# 		| CURL_VERSION_IDN (1<<10)
# 		| CURL_VERSION_SSPI (1<<11)
# 		| CURL_VERSION_CONV (1<<12)
# 		| CURL_VERSION_CURLDEBUG (1<<13)
# 		| CURL_VERSION_TLSAUTH_SRP (1<<14)
# 		| CURL_VERSION_PSL (1<<20)
# 		| CURL_VERSION_BROTLI (1<<23)
# 		| CURL_VERSION_ALTSVC (1<<24);
# 	{host} = 'x86_64-apple-darwin19.0';
# 	{iconv_ver_num} = 0;
# 	{libz_version} = '1.2.11';
# 	{protocols} = dict, file, ftp, ftps, gopher, http, https, imap, imaps, ldap, ldaps, pop3, pop3s, rtsp, smb, smbs, smtp, smtps, telnet, tftp;
# 	{ssl_version} = '(SecureTransport) LibreSSL/2.8.3';
# 	{ssl_version_num} = 0;
# 	{version} = '7.64.1';
# 	{version_num} = 0x074001;
# build version:
# 	LIBCURL_COPYRIGHT = '1996 - 2019 Daniel Stenberg, <[email protected]>.'
# 	LIBCURL_VERSION = '7.64.1'
# 	LIBCURL_VERSION_NUM = 0x074001
# 	LIBCURL_VERSION_MAJOR = 7
# 	LIBCURL_VERSION_MINOR = 64
# 	LIBCURL_VERSION_PATCH = 1
# 	LIBCURL_TIMESTAMP = '2019-03-27'
ok 1 - {age} >= Net::Curl::CURLVERSION_THIRD
ok 2 - {age} == Net::Curl::CURLVERSION_NOW
ok 3 - {version} eq Net::Curl::LIBCURL_VERSION
ok 4 - {version_num} == Net::Curl::LIBCURL_VERSION_NUM

old-10errbuf.t failed with curl 8.2.0

Curl 8.2.0 was just released the morning of July 19: https://curl.se/changes.html#8_2_0

When I tried to build this perl module against it, the test suite of Net::Curl::Easy failed on the old/10errbuf.t test with this error:

#   Failed test 'Reading redirected STDERR'
#   at t/old-10errbuf.t line 45.
#                   '* processing: badprotocol://127.0.0.1:2
# '
#     doesn't match '(?^ix:^\*\s+(?:
#     Protocol \s "? badprotocol "? \s not \s supported \s or \s disabled \s in \s libcurl |
#     Unsupported \s protocol: \s badprotocol |
#     Rebuilt \s URL \s to: \s badprotocol://.+ |
#     Closing \s connection \s -1 |
#     Could \s not \s resolve \s host: \s badprotocol |
#     Could \s not \s resolve: \s badprotocol \(Domain \s name \s not \s found\) |
#     Expire \s in \s 0 \s ms \s for \s 6 \s \(transfer \s 0x[0-9a-f]+\) |
#     Uses \s proxy \s env \s variable \s https?_proxy \s == \s '[^']+'
# )$)'
# Looks like you failed 1 test of 13.
t/old-10errbuf.t ........................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/13 subtests 

This is because curl is now reporting the following on stderr for the error, with new line characters at the end of every line:

* processing: badprotocol://127.0.0.1:2
* Protocol "badprotocol" not supported or disabled in libcurl

Prior to version 8.2.0, curl was only reporting this on stderr:

* Protocol "badprotocol" not supported or disabled in libcurl

The following patch to the test allowed the build of the module with tests to pass using curl 8.2.0:

--- a/t/old-10errbuf.t
+++ b/t/old-10errbuf.t
@@ -42,6 +42,11 @@

 seek $new_error, 0, 0;
 my $line = <$new_error>;
+chomp $line;
+if ($line eq "* processing: badprotocol://127.0.0.1:2") {
+    $line = <$new_error>;
+    chomp $line;
+}
 like( $line, qr/^\*\s+(?:
     Protocol \s "? badprotocol "? \s not \s supported \s or \s disabled \s in \s libcurl |
     Unsupported \s protocol: \s badprotocol |

t/old-10errbuf.t may fail (curl 7.64.0)

In rare situations t/old-10errbuf.t may fail like this:

#   Failed test 'Non-zero return code indicates the expected failure'
#   at t/old-10errbuf.t line 41.

#   Failed test 'Reading redirected STDERR'
#   at t/old-10errbuf.t line 50.
#                   '*   Trying 12.34.56.78...'
#     doesn't match '(?^ix:^\*\s+(?:
#     Protocol \s "? badprotocol "? \s not \s supported \s or \s disabled \s in \s libcurl |
#     Unsupported \s protocol: \s badprotocol |
#     Rebuilt \s URL \s to: \s badprotocol://.+ |
#     Closing \s connection \s -1 |
#     Could \s not \s resolve \s host: \s badprotocol |
#     Could \s not \s resolve: \s badprotocol \(Domain \s name \s not \s found\) |
#     Expire \s in \s 0 \s ms \s for \s 6 \s \(transfer \s 0x[0-9a-f]+\) |
#     Uses \s proxy \s env \s variable \s https?_proxy \s == \s '[^']+'
# )$)'
# Looks like you failed 2 tests of 13.
t/old-10errbuf.t ........................... 
Dubious, test returned 2 (wstat 512, 0x200)
Failed 2/13 subtests 

It seems that curl versions exist which interpret "badprotocol" as host name (for example 7.64.0, which can be found in debian:buster). This can be reproduced like this:

$ docker run -it debian:buster sh -c 'apt update -q && apt install curl -qy && curl badprotocol://127.0.0.1:2'
...
curl: (6) Could not resolve host: badprotocol

If the local DNS is able to resolve "badprotocol", either because such a host really exist, or because wildcard DNS records are active, and there's a webserver listening on such a host, then the curl call is successful and the test fails.

This explains at least three fail reports from my smokers (for example http://www.cpantesters.org/cpan/report/eac3cc1e-a670-11ee-a77b-9a3d6e8775ea )

cannot build against libcurl 7.69.0

I have tried to compile Net-Curl against libcurl 7.69.0 (this is a very new release) but it has failed. Im using Net-Curl the latest 0.43 on Debian 7 amd64.

Here the results:

$ env PATH=${iprefix}/bin:$PATH ${iprefix}/perl/bin/perl Makefile.PL
pkgconfig failed:
Can't locate ExtUtils/PkgConfig.pm in @INC (you may need to install the ExtUtils::PkgConfig module) (@INC contains: /opt/kronometrix/perl/lib/site_perl/5.30.1/x86_64-linux /opt/kronometrix/perl/lib/site_perl/5.30.1 /opt/kronometrix/perl/lib/5.30.1/x86_64-linux /opt/kronometrix/perl/lib/5.30.1) at Makefile.PL line 39.

Using curl-config script.
Found libcurl version 7.69.0
Reading /opt/kronometrix/include/curl/curl.h (cc  -E -I/opt/kronometrix/include /opt/kronometrix/include/curl/curl.h)
Skipping '#define CURLINC_CURL_H': does not define a symbol at Makefile.PL line 319, <H> line 2.
Skipping '#define CURL_STRICTER': does not define a symbol at Makefile.PL line 319, <H> line 34.
Skipping '#define CURL_WIN32': does not define a symbol at Makefile.PL line 319, <H> line 46.
Skipping '#  define CURL_EXTERN': does not define a symbol at Makefile.PL line 319, <H> line 116.
Skipping '#  define CURL_EXTERN': does not define a symbol at Makefile.PL line 319, <H> line 128.
Skipping '#define CURL_DID_MEMORY_FUNC_TYPEDEFS': does not define a symbol at Makefile.PL line 319, <H> line 452.
Reading /opt/kronometrix/include/curl/multi.h (cc  -E -I/opt/kronometrix/include /opt/kronometrix/include/curl/multi.h)
Skipping '#define CURLINC_MULTI_H': does not define a symbol at Makefile.PL line 319, <H> line 2.
CURLOPT_MAIL_RCPT_ALLLOWFAILS unexpected
-> found 909 constants (should be 908)
Writing const-defenums-h.inc
Writing const-curl-xs.inc
Writing const-easy-xs.inc
Writing const-form-xs.inc
Writing const-multi-xs.inc
Writing const-share-xs.inc
Writing curl-Easy-c.inc
Writing curl-Easy-xs.inc
Writing curl-Form-c.inc
Writing curl-Form-xs.inc
Writing curl-Multi-c.inc
Writing curl-Multi-xs.inc
Writing curl-Share-c.inc
Writing curl-Share-xs.inc
Writing lib/Net/Curl/examples.pod
<- examples/01-curl-transport.pl
<- examples/02-multi-simple.pl
<- examples/03-multi-event.pl
<- examples/04-share-threads.pl
<- examples/05-irssi-downloader.pl
Writing lib/Net/Curl/Compat.pm
Generating a Unix-style Makefile
Writing Makefile for Net::Curl
Writing MYMETA.yml and MYMETA.json

and trying to make:

$ make
cp lib/Net/Curl/Form.pm blib/lib/Net/Curl/Form.pm
cp lib/Net/Curl/Multi.pm blib/lib/Net/Curl/Multi.pm
cp lib/Net/Curl/Easy.pm blib/lib/Net/Curl/Easy.pm
cp lib/Net/Curl/Compat.pm blib/lib/Net/Curl/Compat.pm
cp lib/Net/Curl.pm blib/lib/Net/Curl.pm
cp lib/Net/Curl/Share.pm blib/lib/Net/Curl/Share.pm
cp lib/Net/Curl/examples.pod blib/lib/Net/Curl/examples.pod
Running Mkbootstrap for Curl ()
chmod 644 "Curl.bs"
"/opt/kronometrix/perl/bin/perl" -MExtUtils::Command::MM -e 'cp_nonempty' -- Curl.bs blib/arch/auto/Net/Curl/Curl.bs 644
"/opt/kronometrix/perl/bin/perl" "/opt/kronometrix/perl/lib/5.30.1/ExtUtils/xsubpp"  -typemap '/opt/kronometrix/perl/lib/5.30.1/ExtUtils/typemap' -typemap '/home/krmx/workspace/kronometrix/recording/lib/Net-Curl/Net-Curl-0.43/typemap'  Curl.xs > Curl.xsc
mv Curl.xsc Curl.c
cc -c   -Wall -Wno-unknown-pragmas -I/opt/kronometrix/include -O3   -DVERSION=\"0.43\" -DXS_VERSION=\"0.43\" -fPIC "-I/opt/kronometrix/perl/lib/5.30.1/x86_64-linux/CORE"   Curl.c
./const-easy-xs.inc: In function ‘boot_Net__Curl’:
./const-easy-xs.inc:288:20: error: ‘CURLOPT’ undeclared (first use in this function)
./const-easy-xs.inc:288:20: note: each undeclared identifier is reported only once for each function it appears in
make: *** [Curl.o] Error 1
krmx@debian7:~/workspace/kronometrix/recording/lib/Net-Curl/Net-Curl-0.43$ 

Can you please have a look on Net-Curl-0.43 and check if it does build correct against the latest libcurl release ?

Compile failure with recent >=curl-7.50.2

cpanm Net::Curl::Easyfails with:

cc -c   -Wall  -O2   -DVERSION=\"0.37\" -DXS_VERSION=\"0.37\" -fPIC "-I/home/ferki/perl5/perlbrew/perls/perl-5.24.0/lib/5.24.0/x86_64-linux/CORE"   Curl.c
Curl.xs: In function ‘perl_curl_constant_add’:
Curl.xs:387:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic push
 ^
Curl.xs:388:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic ignored "-Wunused-value"
 ^
Curl.xs:390:0: warning: ignoring #pragma clang diagnostic [-Wunknown-pragmas]
 #pragma clang diagnostic pop
 ^
In file included from Curl.xs:23:0:
./const-easy-xs.inc: In function ‘boot_Net__Curl’:
const-defenums-h.inc:2195:24: error: ‘CURL_STRICTER’ undeclared (first use in this function)
 # define CURL_STRICTER CURL_STRICTER
                        ^
./const-easy-xs.inc:654:27: note: in expansion of macro ‘CURL_STRICTER’
    { "CURL_STRICTER", 13, CURL_STRICTER },
                           ^
const-defenums-h.inc:2195:24: note: each undeclared identifier is reported only once for each function it appears in
 # define CURL_STRICTER CURL_STRICTER
                        ^
./const-easy-xs.inc:654:27: note: in expansion of macro ‘CURL_STRICTER’
    { "CURL_STRICTER", 13, CURL_STRICTER },
                           ^
Makefile:360: recipe for target 'Curl.o' failed
make: *** [Curl.o] Error 1

I have curl-7.50.3 installed and CURL_STRICTER seems to have been removed added in 7.50.2.

*constants* tests fail because of CURLALTSVC_ALTUSED (libcurl 7.66.0?)

On some of my freebsd smokers the test suite fails:

#   Failed test 'CURLALTSVC_ALTUSED constant can be retrieved'
#   at t/01-constants.t line 51.
#          got: 'Undefined subroutine &main::CURLALTSVC_ALTUSED called at (eval 931) line 1.
# '
#     expected: ''

#   Failed test 'CURLALTSVC_ALTUSED is defined'
#   at t/01-constants.t line 52.

#   Failed test 'CURLALTSVC_ALTUSED value is an integer'
#   at t/01-constants.t line 53.
#                   undef
#     doesn't match '(?^:^-?\d+$)'
# Looks like you failed 3 tests of 2701.
t/01-constants.t ........................... 
Dubious, test returned 3 (wstat 768, 0x300)
Failed 3/2701 subtests 
    # LIBCURL_VERSION: 475648
...
#   Failed test 'CURLALTSVC_ALTUSED is defined alright - Invalid argument'
#   at t/compat-00constants.t line 63.
# Looks like you failed 1 test of 893.
t/compat-00constants.t ..................... 
Dubious, test returned 1 (wstat 256, 0x100)
Failed 1/893 subtests 

This seem to happen with libcurl 7.66.0. Statistical analysis:

****************************************************************
Regression 'qr:LIBCURL_VERSION = '(.*)''
****************************************************************
Name                   Theta          StdErr     T-stat
[0='const']           1.0000          0.0000    55596771609333392.00
[1='eq_7.26.0']       0.0000          0.0000       2.77
[2='eq_7.29.0']       0.0000          0.0000       5.49
[3='eq_7.38.0']       0.0000          0.0000       4.01
[4='eq_7.42.1']       0.0000          0.0000       4.23
[5='eq_7.47.0']       0.0000          0.0000       3.80
[6='eq_7.52.1']       0.0000          0.0000       5.24
[7='eq_7.54.0']       0.0000          0.0000       0.80
[8='eq_7.58.0']       0.0000          0.0000       2.99
[9='eq_7.59.0']       0.0000          0.0000       2.90
[10='eq_7.64.0']              0.0000          0.0000       6.24
[11='eq_7.65.1']              0.0000          0.0000       4.36
[12='eq_7.66.0']             -1.0000          0.0000    -34778184766755496.00

R^2= 1.000, N= 130, K= 13
****************************************************************

Fails under 5.28.0 configured with -DDEBUGGING

This is perl 5, version 28, subversion 0 (v5.28.0) built for x86_64-linux-thread-multi-ld
config_args='-Duseshrplib -Duse64bitall -Dusethreads -Duseithreads -Duselongdouble -des'

important addition: this only fails on perls with debugging enabled (-DDEBUGGING)

t/60-multi-wait.t .......................... 1/? panic: XSUB Net::Curl::Multi::info_read (Curl.c) failed to extend arg stack: base=1b23a40, sp=1b23a58, hwm=1b23a50
# Tests were run but no plan was declared and done_testing() was not seen.
# Looks like your test exited with 255 just after 3.
t/60-multi-wait.t .......................... Dubious, test returned 255 (wstat 65280, 0xff00)
t/compat-19multi.t ......................... 1/20
#   Failed test 'fdset returns 3 references'
#   at t/compat-19multi.t line 61.
Can't use an undefined value as an ARRAY reference at t/compat-19multi.t line 62.
# Looks like your test exited with 25 just after 7.
t/compat-19multi.t ......................... Dubious, test returned 25 (wstat 6400, 0x1900)
Failed 14/20 subtests
t/old-19multi.t ............................ 1/22 panic: XSUB Net::Curl::Multi::fdset (Curl.c) failed to extend arg stack: base=1241a40, sp=1241a58, hwm=1241a50
# Looks like your test exited with 25 just after 6.
t/old-19multi.t ............................ Dubious, test returned 25 (wstat 6400, 0x1900)
Failed 16/22 subtests
t/old-23socket-action.t .................... 1/14 panic: XSUB Net::Curl::Multi::info_read (Curl.c) failed to extend arg stack: base=1f4fa40, sp=1f4fa58, hwm=1f4fa50
# Looks like your test exited with 255 just after 1.
t/old-23socket-action.t .................... Dubious, test returned 255 (wstat 65280, 0xff00)
Failed 13/14 subtests
t/old-24-multi-refcount.t .................. 1/5 panic: XSUB Net::Curl::Multi::fdset (Curl.c) failed to extend arg stack: base=2267a40, sp=2267a58, hwm=2267a50
# Looks like your test exited with 29 just after 2.
t/old-24-multi-refcount.t .................. Dubious, test returned 29 (wstat 7424, 0x1d00)
Failed 3/5 subtests

CPAN install error on OS X

I am unable to install Net::Curl::Easy on MacOS Monterey 12.4
I'm using brew:

$ which perl
/usr/local/bin/perl

This is perl 5, version 34, subversion 0 (v5.34.0) built for darwin-thread-multi-2level

------------[snip]-------->8---

/usr/local/Cellar/perl/5.34.0/lib/perl5/5.34.0/darwin-thread-multi-2level/CORE/perl.h:738:21: note: expanded from macro 'STMT_END'
#   define STMT_END     )
                        ^
./const-easy-xs.inc:824:35: error: use of undeclared identifier 'CURL_PREREQFUNC_ABORT'
                        { "CURL_PREREQFUNC_ABORT", 21, CURL_PREREQFUNC_ABORT },
                                                       ^
./const-defenums-h.inc:2735:32: note: expanded from macro 'CURL_PREREQFUNC_ABORT'
# define CURL_PREREQFUNC_ABORT CURL_PREREQFUNC_ABORT
                               ^
./const-easy-xs.inc:825:32: error: use of undeclared identifier 'CURL_PREREQFUNC_OK'
                        { "CURL_PREREQFUNC_OK", 18, CURL_PREREQFUNC_OK },
                                                    ^
./const-defenums-h.inc:2738:29: note: expanded from macro 'CURL_PREREQFUNC_OK'
# define CURL_PREREQFUNC_OK CURL_PREREQFUNC_OK
                            ^
478 warnings and 2 errors generated.
make: *** [Curl.o] Error 1
  SYP/Net-Curl-0.51.tar.gz
  /usr/bin/make -- NOT OK
Failed during this command:
 SYP/Net-Curl-0.51.tar.gz                     : make NO

cpan[2]>        

This has been working, but after upgrading to Monterey I can't install (other CPAN models seem ok)

Please let me know if you need the full log.

Kind regards,
Paul

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.