mirror of
https://github.com/fosslinux/live-bootstrap.git
synced 2026-03-02 01:18:08 +01:00
270 lines
9.2 KiB
Diff
270 lines
9.2 KiB
Diff
From f1fabc56fb9cd2417f5423fdc73ab73574ea8c8e Mon Sep 17 00:00:00 2001
|
|
From: Samuel Tyler <fosslinux@aussies.space>
|
|
Date: Fri, 22 Aug 2025 23:58:47 +1000
|
|
Subject: [PATCH 1/4] Revert "Upgrade Socket from 2.004 to 2.006"
|
|
|
|
This reverts commit aff163d96ea1505927d05ead3078b1d7bb3bfa93.
|
|
---
|
|
Porting/Maintainers.pl | 2 +-
|
|
cpan/Socket/Makefile.PL | 8 +-----
|
|
cpan/Socket/Socket.pm | 6 +---
|
|
cpan/Socket/Socket.xs | 59 ++++++++++++----------------------------
|
|
cpan/Socket/t/sockaddr.t | 10 ++-----
|
|
pod/perldelta.pod | 5 +---
|
|
6 files changed, 25 insertions(+), 65 deletions(-)
|
|
|
|
diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl
|
|
index e107f710e0..54ab2c1352 100755
|
|
--- perl-5.17.4/Porting/Maintainers.pl
|
|
+++ perl-5.17.4/Porting/Maintainers.pl
|
|
@@ -1636,7 +1636,7 @@ use File::Glob qw(:case);
|
|
|
|
'Socket' => {
|
|
'MAINTAINER' => 'pevans',
|
|
- 'DISTRIBUTION' => 'PEVANS/Socket-2.006.tar.gz',
|
|
+ 'DISTRIBUTION' => 'PEVANS/Socket-2.004.tar.gz',
|
|
'FILES' => q[cpan/Socket],
|
|
'UPSTREAM' => 'cpan',
|
|
},
|
|
diff --git perl-5.17.4/cpan/Socket/Makefile.PL perl-5.17.4/cpan/Socket/Makefile.PL
|
|
index 639a57c4d6..9e76dcea96 100644
|
|
--- perl-5.17.4/cpan/Socket/Makefile.PL
|
|
+++ perl-5.17.4/cpan/Socket/Makefile.PL
|
|
@@ -108,19 +108,13 @@ check_for(
|
|
main => "struct sockaddr_in6 sin6; sin6.sin6_scope_id = 0;"
|
|
);
|
|
|
|
+# TODO: Needs adding to perl5 core before importing dual-life again
|
|
check_for(
|
|
confkey => "d_ip_mreq",
|
|
define => "HAS_IP_MREQ",
|
|
main => "struct ip_mreq mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
|
|
);
|
|
|
|
-# TODO: Needs adding to perl5 core before importing dual-life again
|
|
-check_for(
|
|
- confkey => "d_ip_mreq_source",
|
|
- define => "HAS_IP_MREQ_SOURCE",
|
|
- main => "struct ip_mreq_source mreq; mreq.imr_multiaddr.s_addr = INADDR_ANY;"
|
|
-);
|
|
-
|
|
check_for(
|
|
confkey => "d_ipv6_mreq",
|
|
define => "HAS_IPV6_MREQ",
|
|
diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm
|
|
index c0dc4aa7dd..83729b290d 100644
|
|
--- perl-5.17.4/cpan/Socket/Socket.pm
|
|
+++ perl-5.17.4/cpan/Socket/Socket.pm
|
|
@@ -3,7 +3,7 @@ package Socket;
|
|
use strict;
|
|
{ use 5.006001; }
|
|
|
|
-our $VERSION = '2.006';
|
|
+our $VERSION = '2.004';
|
|
|
|
=head1 NAME
|
|
|
|
@@ -184,8 +184,6 @@ opaque string representing the IP address (you can use inet_ntoa() to convert
|
|
the address to the four-dotted numeric format). Will croak if the structure
|
|
does not represent an C<AF_INET> address.
|
|
|
|
-In scalar context will return just the IP address.
|
|
-
|
|
=head2 $sockaddr = sockaddr_in $port, $ip_address
|
|
|
|
=head2 ($port, $ip_address) = sockaddr_in $sockaddr
|
|
@@ -213,8 +211,6 @@ flow label. (You can use inet_ntop() to convert the address to the usual
|
|
string format). Will croak if the structure does not represent an C<AF_INET6>
|
|
address.
|
|
|
|
-In scalar context will return just the IP address.
|
|
-
|
|
=head2 $sockaddr = sockaddr_in6 $port, $ip6_address, [$scope_id, [$flowinfo]]
|
|
|
|
=head2 ($port, $ip6_address, $scope_id, $flowinfo) = sockaddr_in6 $sockaddr
|
|
diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs
|
|
index e99eac12ef..0bdebf5ca4 100644
|
|
--- perl-5.17.4/cpan/Socket/Socket.xs
|
|
+++ perl-5.17.4/cpan/Socket/Socket.xs
|
|
@@ -179,9 +179,6 @@ static void *my_hv_common_key_len(pTHX_ HV *hv, const char *key, I32 kl,
|
|
#ifndef mPUSHp
|
|
# define mPUSHp(p,l) sv_setpvn_mg(PUSHs(sv_newmortal()), (p), (l))
|
|
#endif /* !mPUSHp */
|
|
-#ifndef mPUSHs
|
|
-# define mPUSHs(s) PUSHs(sv_2mortal(s))
|
|
-#endif /* !mPUSHs */
|
|
|
|
#ifndef CvCONST_on
|
|
# undef newCONSTSUB
|
|
@@ -789,7 +786,8 @@ unpack_sockaddr_in(sin_sv)
|
|
{
|
|
STRLEN sockaddrlen;
|
|
struct sockaddr_in addr;
|
|
- SV *ip_address_sv;
|
|
+ unsigned short port;
|
|
+ struct in_addr ip_address;
|
|
char * sin = SvPVbyte(sin_sv,sockaddrlen);
|
|
if (sockaddrlen != sizeof(addr)) {
|
|
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
|
|
@@ -800,16 +798,12 @@ unpack_sockaddr_in(sin_sv)
|
|
croak("Bad address family for %s, got %d, should be %d",
|
|
"Socket::unpack_sockaddr_in", addr.sin_family, AF_INET);
|
|
}
|
|
- ip_address_sv = newSVpvn((char *)&addr.sin_addr, sizeof(addr.sin_addr));
|
|
+ port = ntohs(addr.sin_port);
|
|
+ ip_address = addr.sin_addr;
|
|
|
|
- if(GIMME_V == G_ARRAY) {
|
|
- EXTEND(SP, 2);
|
|
- mPUSHi(ntohs(addr.sin_port));
|
|
- mPUSHs(ip_address_sv);
|
|
- }
|
|
- else {
|
|
- mPUSHs(ip_address_sv);
|
|
- }
|
|
+ EXTEND(SP, 2);
|
|
+ PUSHs(sv_2mortal(newSViv((IV) port)));
|
|
+ PUSHs(sv_2mortal(newSVpvn((char *)&ip_address, sizeof(ip_address))));
|
|
}
|
|
|
|
void
|
|
@@ -860,7 +854,6 @@ unpack_sockaddr_in6(sin6_sv)
|
|
STRLEN addrlen;
|
|
struct sockaddr_in6 sin6;
|
|
char * addrbytes = SvPVbyte(sin6_sv, addrlen);
|
|
- SV *ip_address_sv;
|
|
if (addrlen != sizeof(sin6))
|
|
croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf,
|
|
"Socket::unpack_sockaddr_in6", (UV)addrlen, (UV)sizeof(sin6));
|
|
@@ -868,22 +861,15 @@ unpack_sockaddr_in6(sin6_sv)
|
|
if (sin6.sin6_family != AF_INET6)
|
|
croak("Bad address family for %s, got %d, should be %d",
|
|
"Socket::unpack_sockaddr_in6", sin6.sin6_family, AF_INET6);
|
|
- ip_address_sv = newSVpvn((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
|
|
-
|
|
- if(GIMME_V == G_ARRAY) {
|
|
- EXTEND(SP, 4);
|
|
- mPUSHi(ntohs(sin6.sin6_port));
|
|
- mPUSHs(ip_address_sv);
|
|
+ EXTEND(SP, 4);
|
|
+ mPUSHi(ntohs(sin6.sin6_port));
|
|
+ mPUSHp((char *)&sin6.sin6_addr, sizeof(sin6.sin6_addr));
|
|
# ifdef HAS_SIN6_SCOPE_ID
|
|
- mPUSHi(sin6.sin6_scope_id);
|
|
+ mPUSHi(sin6.sin6_scope_id);
|
|
# else
|
|
- mPUSHi(0);
|
|
+ mPUSHi(0);
|
|
# endif
|
|
- mPUSHi(ntohl(sin6.sin6_flowinfo));
|
|
- }
|
|
- else {
|
|
- mPUSHs(ip_address_sv);
|
|
- }
|
|
+ mPUSHi(ntohl(sin6.sin6_flowinfo));
|
|
#else
|
|
ST(0) = (SV*)not_here("pack_sockaddr_in6");
|
|
#endif
|
|
@@ -912,20 +898,11 @@ inet_ntop(af, ip_address_sv)
|
|
|
|
struct_size = sizeof(addr);
|
|
|
|
- switch(af) {
|
|
- case AF_INET:
|
|
- if(addrlen != 4)
|
|
- croak("Bad address length for Socket::inet_ntop on AF_INET;"
|
|
- " got %d, should be 4");
|
|
- break;
|
|
+ if (af != AF_INET
|
|
#ifdef AF_INET6
|
|
- case AF_INET6:
|
|
- if(addrlen != 16)
|
|
- croak("Bad address length for Socket::inet_ntop on AF_INET6;"
|
|
- " got %d, should be 16");
|
|
- break;
|
|
+ && af != AF_INET6
|
|
#endif
|
|
- default:
|
|
+ ) {
|
|
croak("Bad address family for %s, got %d, should be"
|
|
#ifdef AF_INET6
|
|
" either AF_INET or AF_INET6",
|
|
@@ -1049,7 +1026,7 @@ pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef)
|
|
SV * interface
|
|
CODE:
|
|
{
|
|
-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
|
|
+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
|
|
struct ip_mreq_source mreq;
|
|
char * multiaddrbytes;
|
|
char * sourcebytes;
|
|
@@ -1092,7 +1069,7 @@ unpack_ip_mreq_source(mreq_sv)
|
|
SV * mreq_sv
|
|
PPCODE:
|
|
{
|
|
-#if defined(HAS_IP_MREQ_SOURCE) && defined (IP_ADD_SOURCE_MEMBERSHIP)
|
|
+#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP)
|
|
struct ip_mreq_source mreq;
|
|
STRLEN mreqlen;
|
|
char * mreqbytes = SvPVbyte(mreq_sv, mreqlen);
|
|
diff --git perl-5.17.4/cpan/Socket/t/sockaddr.t perl-5.17.4/cpan/Socket/t/sockaddr.t
|
|
index 1ae24a0bba..63cce24309 100644
|
|
--- perl-5.17.4/cpan/Socket/t/sockaddr.t
|
|
+++ perl-5.17.4/cpan/Socket/t/sockaddr.t
|
|
@@ -10,7 +10,7 @@ use Socket qw(
|
|
sockaddr_family
|
|
sockaddr_un
|
|
);
|
|
-use Test::More tests => 33;
|
|
+use Test::More tests => 31;
|
|
|
|
# inet_aton, inet_ntoa
|
|
{
|
|
@@ -73,8 +73,6 @@ SKIP: {
|
|
is( (unpack_sockaddr_in($sin))[0] , 100, 'pack_sockaddr_in->unpack_sockaddr_in port');
|
|
is(inet_ntoa((unpack_sockaddr_in($sin))[1]), "10.20.30.40", 'pack_sockaddr_in->unpack_sockaddr_in addr');
|
|
|
|
- is(inet_ntoa(scalar unpack_sockaddr_in($sin)), "10.20.30.40", 'unpack_sockaddr_in in scalar context yields addr');
|
|
-
|
|
is_deeply( [ sockaddr_in($sin) ], [ unpack_sockaddr_in($sin) ],
|
|
'sockaddr_in in list context unpacks' );
|
|
|
|
@@ -85,8 +83,8 @@ SKIP: {
|
|
# pack_sockaddr_in6, unpack_sockaddr_in6
|
|
# sockaddr_in6
|
|
SKIP: {
|
|
- skip "No AF_INET6", 9 unless my $AF_INET6 = eval { Socket::AF_INET6() };
|
|
- skip "Cannot pack_sockaddr_in6()", 9 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
|
|
+ skip "No AF_INET6", 8 unless my $AF_INET6 = eval { Socket::AF_INET6() };
|
|
+ skip "Cannot pack_sockaddr_in6()", 8 unless my $sin6 = eval { Socket::pack_sockaddr_in6(0x1234, "0123456789abcdef", 0, 89) };
|
|
|
|
ok(defined $sin6, 'pack_sockaddr_in6 defined');
|
|
|
|
@@ -97,8 +95,6 @@ SKIP: {
|
|
is((Socket::unpack_sockaddr_in6($sin6))[2], 0, 'pack_sockaddr_in6->unpack_sockaddr_in6 scope_id');
|
|
is((Socket::unpack_sockaddr_in6($sin6))[3], 89, 'pack_sockaddr_in6->unpack_sockaddr_in6 flowinfo');
|
|
|
|
- is(scalar Socket::unpack_sockaddr_in6($sin6), "0123456789abcdef", 'unpack_sockaddr_in6 in scalar context yields addr');
|
|
-
|
|
is_deeply( [ Socket::sockaddr_in6($sin6) ], [ Socket::unpack_sockaddr_in6($sin6) ],
|
|
'sockaddr_in6 in list context unpacks' );
|
|
|
|
diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod
|
|
index 52eaf8f1f5..78f169f953 100644
|
|
--- perl-5.17.4/pod/perldelta.pod
|
|
+++ perl-5.17.4/pod/perldelta.pod
|
|
@@ -308,10 +308,7 @@ opcodes.
|
|
|
|
=item *
|
|
|
|
-L<Socket> has been upgraded from version 2.004 to 2.006.
|
|
-C<unpack_sockaddr_in()> and C<unpack_sockaddr_in6()> now return just the IP
|
|
-address in scalar context, and C<inet_ntop()> now guards against incorrect
|
|
-length scalars being passed in.
|
|
+L<XXX> has been upgraded from version A.xx to B.yy.
|
|
|
|
=item *
|
|
|
|
--
|
|
2.49.1
|
|
|