From a70ed0b00a2650fa5a9cc238460e9602a3df9df1 Mon Sep 17 00:00:00 2001 From: Samuel Tyler Date: Fri, 22 Aug 2025 23:59:39 +1000 Subject: [PATCH 3/4] Revert "Upgrade Socket from 2.002 to 2.003" This reverts commit d4ada64ad845b1ffe124cf230a345b847e43d755. --- Porting/Maintainers.pl | 2 +- cpan/Socket/Makefile.PL | 22 ++++++-------- cpan/Socket/Socket.pm | 36 +++++++--------------- cpan/Socket/Socket.xs | 67 ----------------------------------------- cpan/Socket/t/ip_mreq.t | 14 +-------- pod/perldelta.pod | 4 +++ 6 files changed, 27 insertions(+), 118 deletions(-) diff --git perl-5.17.4/Porting/Maintainers.pl perl-5.17.4/Porting/Maintainers.pl index 3b3004f6c3..e38daab394 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.003.tar.gz', + 'DISTRIBUTION' => 'PEVANS/Socket-2.002.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 9e76dcea96..3be198e024 100644 --- perl-5.17.4/cpan/Socket/Makefile.PL +++ perl-5.17.4/cpan/Socket/Makefile.PL @@ -161,14 +161,13 @@ my @names = ( IOV_MAX - IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP - IP_DROP_SOURCE_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF IP_MULTICAST_LOOP - IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS IP_RECVRETOPTS IP_RETOPTS IP_TOS - IP_TTL + IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_HDRINCL IP_MULTICAST_IF + IP_MULTICAST_LOOP IP_MULTICAST_TTL IP_OPTIONS IP_RECVOPTS + IP_RECVRETOPTS IP_RETOPTS IP_TOS IP_TTL - IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP - IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS - IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY + IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER + IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP + IPV6_UNICAST_HOPS IPV6_V6ONLY MSG_BCAST MSG_BTAG MSG_CTLFLAGS MSG_CTLIGNORE MSG_DONTWAIT MSG_EOF MSG_EOR MSG_ERRQUEUE MSG_ETAG MSG_FIN MSG_MAXIOVLEN MSG_MCAST @@ -201,11 +200,10 @@ my @names = ( SO_SECURITY_ENCRYPTION_TRANSPORT SO_SNDBUF SO_SNDLOWAT SO_SNDTIMEO SO_STATE SO_TYPE SO_USELOOPBACK SO_XOPEN SO_XSE - TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO - TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL - TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT - TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT - TCP_WINDOW_CLAMP + TCP_KEEPALIVE TCP_MAXRT TCP_MAXSEG TCP_NODELAY TCP_STDURG TCP_CORK + TCP_KEEPIDLE TCP_KEEPINTVL TCP_KEEPCNT TCP_SYNCNT TCP_LINGER2 + TCP_DEFER_ACCEPT TCP_WINDOW_CLAMP TCP_INFO TCP_QUICKACK TCP_CONGESTION + TCP_MD5SIG UIO_MAXIOV ), diff --git perl-5.17.4/cpan/Socket/Socket.pm perl-5.17.4/cpan/Socket/Socket.pm index d9bbfae258..41f214d8fe 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.003'; +our $VERSION = '2.002'; =head1 NAME @@ -260,18 +260,6 @@ sockopts. Takes an C structure. Returns a list of two elements; the IPv4 multicast address and interface address. -=head2 $ip_mreq_source = pack_ip_mreq_source $multiaddr, $source, $interface - -Takes an IPv4 multicast address, source address, and optionally an interface -address (or C). Returns the C structure with those -arguments packed in. Suitable for use with the C -and C sockopts. - -=head2 ($multiaddr, $source, $interface) = unpack_ip_mreq_source $ip_mreq - -Takes an C structure. Returns a list of three elements; the -IPv4 multicast address, source address and interface address. - =head2 $ipv6_mreq = pack_ipv6_mreq $multiaddr6, $ifindex Takes an IPv6 multicast address and an interface number. Returns the @@ -748,26 +736,24 @@ our @EXPORT_OK = qw( SOCK_NONBLOCK SOCK_CLOEXEC - IP_ADD_MEMBERSHIP IP_ADD_SOURCE_MEMBERSHIP IP_DROP_MEMBERSHIP - IP_DROP_SOURCE_MEMBERSHIP IP_MULTICAST_IF IP_MULTICAST_LOOP - IP_MULTICAST_TTL + IP_ADD_MEMBERSHIP IP_DROP_MEMBERSHIP IP_MULTICAST_IF + IP_MULTICAST_LOOP IP_MULTICAST_TTL IPPROTO_IP IPPROTO_IPV6 IPPROTO_RAW IPPROTO_ICMP IPPROTO_TCP IPPROTO_UDP - TCP_CONGESTION TCP_CONNECTIONTIMEOUT TCP_CORK TCP_DEFER_ACCEPT TCP_INFO - TCP_INIT_CWND TCP_KEEPALIVE TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL - TCP_LINGER2 TCP_MAXRT TCP_MAXSEG TCP_MD5SIG TCP_NODELAY TCP_NOOPT - TCP_NOPUSH TCP_QUICKACK TCP_SACK_ENABLE TCP_STDURG TCP_SYNCNT - TCP_WINDOW_CLAMP + TCP_CONGESTION TCP_CORK TCP_DEFER_ACCEPT TCP_INFO TCP_KEEPALIVE + TCP_KEEPCNT TCP_KEEPIDLE TCP_KEEPINTVL TCP_LINGER2 TCP_MAXRT TCP_MAXSEG + TCP_MD5SIG TCP_NODELAY TCP_QUICKACK TCP_STDURG TCP_SYNCNT + TCP_WINDOW_CLAMP IN6ADDR_ANY IN6ADDR_LOOPBACK - IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_JOIN_GROUP - IPV6_LEAVE_GROUP IPV6_MTU IPV6_MTU_DISCOVER IPV6_MULTICAST_HOPS - IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP IPV6_UNICAST_HOPS IPV6_V6ONLY + IPV6_ADD_MEMBERSHIP IPV6_DROP_MEMBERSHIP IPV6_MTU IPV6_MTU_DISCOVER + IPV6_MULTICAST_HOPS IPV6_MULTICAST_IF IPV6_MULTICAST_LOOP + IPV6_UNICAST_HOPS IPV6_V6ONLY - pack_ip_mreq unpack_ip_mreq pack_ip_mreq_source unpack_ip_mreq_source + pack_ip_mreq unpack_ip_mreq pack_ipv6_mreq unpack_ipv6_mreq diff --git perl-5.17.4/cpan/Socket/Socket.xs perl-5.17.4/cpan/Socket/Socket.xs index 0bdebf5ca4..f22c1f3001 100644 --- perl-5.17.4/cpan/Socket/Socket.xs +++ perl-5.17.4/cpan/Socket/Socket.xs @@ -1019,73 +1019,6 @@ unpack_ip_mreq(mreq_sv) #endif } -void -pack_ip_mreq_source(multiaddr, source, interface=&PL_sv_undef) - SV * multiaddr - SV * source - SV * interface - CODE: - { -#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) - struct ip_mreq_source mreq; - char * multiaddrbytes; - char * sourcebytes; - char * interfacebytes; - STRLEN len; - if (DO_UTF8(multiaddr) && !sv_utf8_downgrade(multiaddr, 1)) - croak("Wide character in %s", "Socket::pack_ip_mreq_source"); - multiaddrbytes = SvPVbyte(multiaddr, len); - if (len != sizeof(mreq.imr_multiaddr)) - croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, - "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_multiaddr)); - if (DO_UTF8(source) && !sv_utf8_downgrade(source, 1)) - croak("Wide character in %s", "Socket::pack_ip_mreq_source"); - if (len != sizeof(mreq.imr_sourceaddr)) - croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, - "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_sourceaddr)); - sourcebytes = SvPVbyte(source, len); - Zero(&mreq, sizeof(mreq), char); - Copy(multiaddrbytes, &mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr), char); - Copy(sourcebytes, &mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr), char); - if(SvOK(interface)) { - if (DO_UTF8(interface) && !sv_utf8_downgrade(interface, 1)) - croak("Wide character in %s", "Socket::pack_ip_mreq"); - interfacebytes = SvPVbyte(interface, len); - if (len != sizeof(mreq.imr_interface)) - croak("Bad arg length %s, length is %"UVuf", should be %"UVuf, - "Socket::pack_ip_mreq", (UV)len, (UV)sizeof(mreq.imr_interface)); - Copy(interfacebytes, &mreq.imr_interface, sizeof(mreq.imr_interface), char); - } - else - mreq.imr_interface.s_addr = INADDR_ANY; - ST(0) = sv_2mortal(newSVpvn((char *)&mreq, sizeof(mreq))); -#else - not_here("pack_ip_mreq_source"); -#endif - } - -void -unpack_ip_mreq_source(mreq_sv) - SV * mreq_sv - PPCODE: - { -#if defined(HAS_IP_MREQ) && defined (IP_ADD_SOURCE_MEMBERSHIP) - struct ip_mreq_source mreq; - STRLEN mreqlen; - char * mreqbytes = SvPVbyte(mreq_sv, mreqlen); - if (mreqlen != sizeof(mreq)) - croak("Bad arg length for %s, length is %"UVuf", should be %"UVuf, - "Socket::unpack_ip_mreq_source", (UV)mreqlen, (UV)sizeof(mreq)); - Copy(mreqbytes, &mreq, sizeof(mreq), char); - EXTEND(SP, 3); - mPUSHp((char *)&mreq.imr_multiaddr, sizeof(mreq.imr_multiaddr)); - mPUSHp((char *)&mreq.imr_sourceaddr, sizeof(mreq.imr_sourceaddr)); - mPUSHp((char *)&mreq.imr_interface, sizeof(mreq.imr_interface)); -#else - not_here("unpack_ip_mreq_source"); -#endif - } - void pack_ipv6_mreq(multiaddr, interface) SV * multiaddr diff --git perl-5.17.4/cpan/Socket/t/ip_mreq.t perl-5.17.4/cpan/Socket/t/ip_mreq.t index 2a99509904..f08920c437 100644 --- perl-5.17.4/cpan/Socket/t/ip_mreq.t +++ perl-5.17.4/cpan/Socket/t/ip_mreq.t @@ -5,7 +5,6 @@ use Test::More; use Socket qw( INADDR_ANY pack_ip_mreq unpack_ip_mreq - pack_ip_mreq_source unpack_ip_mreq_source ); # Check that pack/unpack_ip_mreq either croak with "Not implemented", or @@ -20,7 +19,7 @@ if( !defined $packed ) { die $@; } -plan tests => 6; +plan tests => 3; my @unpacked = unpack_ip_mreq $packed; @@ -28,14 +27,3 @@ is( $unpacked[0], "\xe0\0\0\1", 'unpack_ip_mreq multiaddr' ); is( $unpacked[1], INADDR_ANY, 'unpack_ip_mreq interface' ); is( (unpack_ip_mreq pack_ip_mreq "\xe0\0\0\1")[1], INADDR_ANY, 'pack_ip_mreq interface defaults to INADDR_ANY' ); - -SKIP: { - my $mreq; - skip 3, "No pack_ip_mreq_source" unless defined eval { $mreq = pack_ip_mreq_source "\xe0\0\0\2", "\x0a\0\0\1", INADDR_ANY }; - - @unpacked = unpack_ip_mreq_source $mreq; - - is( $unpacked[0], "\xe0\0\0\2", 'unpack_ip_mreq_source multiaddr' ); - is( $unpacked[1], "\x0a\0\0\1", 'unpack_ip_mreq_source source' ); - is( $unpacked[2], INADDR_ANY, 'unpack_ip_mreq_source interface' ); -} diff --git perl-5.17.4/pod/perldelta.pod perl-5.17.4/pod/perldelta.pod index a64c1a9143..65a9378242 100644 --- perl-5.17.4/pod/perldelta.pod +++ perl-5.17.4/pod/perldelta.pod @@ -324,6 +324,10 @@ functions required for IP multicast source group membership have been added. L has been upgraded from version 0.31 to 0.32. This includes several documentation and bug fixes. +L has been upgraded from version 2.37 to 2.38. It can now freeze +and thaw vstrings correctly. This causes a slight incompatible change in +the storage format, so the format version has increased to 2.9. + =item * L has been upgraded from version 1.40 to 1.41. This adds the -- 2.49.1