Revision history for Socket

2.037   2023-06-06
        [CHANGES]
         * Convert hard tabs to spaces in source files
         * Add `use VERSION` everywhere
         * Fix indentation for consistency

        [BUGFIXES]
         * Fix compiler warnings on MSWin32 (RT148275)

2.036   2022-08-19
        [BUGFIXES]
         * Avoid putting macros inside arguments to other macros, as it annoys
           strict C compilers (Perl #20119)

2.035   2022-07-01
        [CHANGES]
         * Support SO_INCOMING_CPU and SO_INCOMING_NAPI_ID

2.034   2022-06-27
        [BUGFIXES]
         * Workaround for inet_ntop/inet_pton being defined by recent releases
           of mingw-w64 (RT142390)

2.033   2022-04-29
        [CHANGES]
         * Apply patch from core perl for z/OS support (RT142470)

2.032   2021-06-03
        [CHANGES]
         * Attempt to support NetBSD's LOCAL_* constants (RT127989)
         * Use G_LIST instead of G_ARRAY

        [BUGFIXES]
         * Support short AF_UNIX addresses on Cygwin (RT135262)
         * Make sure to use SvPVbyte() and not plain SvPV() (RT134421)

2.031   2021-01-05
        [CHANGES]
         * Warn about truncation of out-of-range port numbers in
           pack_sockaddr_in*

        [BUGFIXES]
         * Avoid size warnings in leftshift operator (RT129217)
         * Don't wrap the now-deprecated addrinfo IDN constants
           ALLOW_UNASSIGNED and USE_STD3_ASCII_RULES (RT129660)
         * Skip the socketpair AF_UNIX+SOCK_DGRAM tests if the OS claims them
           to be unsupported (RT132946)
         * Prefer getaddrinfo() to implement inet_aton() because the
           alternative gethostbyname() has thread races (RT129189)

2.030   2020-06-07
        [CHANGES]
         * Prepare for a stricter perl:
            + use strict; use warnings in all unit tests (RT132846)
            + declare use v5.6.1 in all perl files

2.029   2019-02-20 19:19:12
        [BUGFIXES]
         * Old MinGW lacks ADDRESS_FAMILY; use USHORT instead (RT128550)

2.028   2019-02-19 23:59:30
        [CHANGES]
         * Add PF_LOCAL/AF_LOCAL constants (RT127089)
         * Provide sockaddr_un on WIN32 (RT128550)

2.027   2018-01-12 16:58:47
        [BUGFIXES]
         * Reimplement croak_sv (securely) for older perls (RT124063)

2.026   2018-01-11 23:15:28
        [CHANGES]
         * Add TCP_USER_TIMEOUT (RT123253)

        [BUGFIXES]
         * Fix printf format specifier for STRLEN/sizeof (RT124044)
         * Recognise %Config key for HAS_GAI_STRERROR (RT124044)
         * Remove unused and insecure implementation of croak_sv (RT122830)

2.025   2018-01-09 15:12:51
        [CHANGES]
         * Add IPPROTO_ICMPV6

        [BUGFIXES]
         * Fix for C++11 compilers - require a space either side of
           string-pasting macros (thanks Karl Williamson)
         * Fix for machines lacking HAS_SOCKADDR_IN6 (RT116913) (thanks ilmari)
         * Print to STDERR on test failures (RT123436) (thanks ilmari)

2.024   2016/08/11 13:49:48
        [BUGFIXES]
         * Restore back-compat to pre-2.011 behaviour on undefined port
           numbers to pack_sockaddr_in(6?) - silently accept undef as zero
           (RT116699)
         * Warn if pack_sockaddr_un is truncating an overly long path
           (mitigates but does not resolve RT116819)

2.023   2016/08/02 14:50:50
        [CHANGES]
         * Add more socket(7), ip(7) and ipv6(7) socket options from Linux

        [BUGFIXES]
         * Fix skip count for abstract AF_UNIX path tests when not running on
           Linux

2.022   2016/08/01 16:02:48
        [CHANGES]
         * Throw exceptions if pack/unpack sockaddr functions are passed
           undefined arguments (RT116624)

        [BUGFIXES]
         * Fix coverty complaint (RT111707)

2.021   2015/11/18 17:09:13
        [CHANGES]
         * Add constants for TCP fastopen (RT105155)

        [BUGFIXES]
         * Respect HAS_GETHOSTBYNAME before calling gethostbyname() (RT105947)
         * Fixes for inet_pton() fallback on Win32 (RT107058)
         * Fix for INET_ADDRSTRLEN on AmigaOS (really!) (RT106797)
         * Provide gai_strerror() fallback on platforms that lack one
           (RT76091)

2.020   2015/06/24 14:45:25
        [CHANGES]
         * Provide more IPPROTO constants - IGMP, GRE, ESP, AH, SCTP
        
        [BUGFIXES]
         * Provide an SvPVx_nolen wrapper for older perls (<5.8.8) that lack
           it (RT104120)

2.019   2015/04/29 17:05:33
        [BUGFIXES]
         * Provide emulations of inet_ntop/inet_pton on MSWin32 by using
           WSAStringToAddress/WSAAddressToString

2.018   2015/02/12 13:42:41
        [BUGFIXES]
         * Fix for "addr is not a string" test to use SvPOKp() before 5.18

2.017   2015/02/10 12:05:14
        [CHANGES]
         * Added some more SO_* constants defined on Linux (thanks
           Ronald van Dorp)

        [BUGFIXES]
         * Remember to SvGETMAGIC in getnameinfo() (RT79557)
         * Quiet some compiler warnings (RT101495, RT100736)
         * Fix "Attempt to free unreferenced scalar" warnings (RT78626, et.al.)

2.016   2014/10/08 21:53:10
        [BUGFIXES]
         * Wrap configure tests in a {} block in case of C99-deficient
           compilers (RT99363)
         * #include <stddef.h> so that NULL definitely exists (RT98248)
         * Need to pass NI_NUMERICSERV during unit tests for some OSes not to
           error (VMS) (RT98217)

2.015   2014/08/15 23:27:07
        [BUGFIXES]
         * Test multiple possibnle portnum->name lookups in case /etc/services
           lacks one (RT96874)
         * Stronger kill in unit-test for cygwin (RT97773)
         * Don't try to assert the result of getnameinfo() to match
           gethostbyaddr() or getservbyport() (RT77248)
         * Ensure that 'socktype' hint is always passed to getaddrinfo during
           unit-testing (RT96274)
         * Fix regexp borrowed from Regexp::Common::net (RT96274)

2.014   2014/06/01 00:09:13
        [BUGFIXES]
         * Make sure to (UV)-cast arguments sprintf'ed with UVf
         * Use STRUCT_OFFSET() instead of plain C99 offsetof() (RT96036)
         * Fix the regexp used to filter for numeric IP addresses in
           fake_getaddrinfo() (RT95758)
         * Protect against getprotobyname() not being available (RT90217)

2.013   2013/10/28 00:49:43
        [BUGFIXES]
         * Unit-test bugfixes for VMS (RT89766):
            + Need to pass protocol => IPPROTO_TCP to avoid SCTP as well
            + Perform AI_NUMERICHOST test against non-"localhost"
            + May have to set NI_NUMERICSERV flag if it fails without
           (thanks Craig A. Berry)

2.012   2013/09/03 13:20:09
        [CHANGES]
         * <ws2tcpip.h> is not needed on WinCE (RT87389)
         * "#undef interface" to avoid issues from Windows' <ole2.h> (RT87389)

2013/07/28
2.011   CHANGES:
         * Handle FreeBSD (or other platforms) returning shorter AF_UNIX
           sockaddr structures due to embedded sun_len (RT86613)
           (thanks Maxime Soulé; MAXS)

2013/06/24
2.010   CHANGES:
         * Wrap some IPTOS_* constants, which may come from <netinet/ip.h>
         * Probe for and optionally include <netinet/ip.h>
         * Defeat C compilers' attempts to optimise away configure-time probes
           for functions that are never called

2013/01/18
2.009   CHANGES:
         * Fix building in core by skipping check_for() as it doesn't work
           there (RT82760)

2012/12/27
2.008   CHANGES:
         * Fix uninitialised memory read (RT82119)

2012/12/16
2.007   CHANGES:
         * Test %Config keys for definedness, not mere existence (RT79854)
         * Fix missing argument in sprintf in Socket.xs (from perl.git
           5d6dfea82e1c4b6, RT82007)

2012/08/19
2.006   CHANGES:
         * Fix AF_INET6 test skip counts in t/sockaddr.t (RT79071)
         * Define mPUSHs() as it's lacking before 5.10.1

2012/08/16
2.005   CHANGES:
         * Have unpack_sockaddr_in{,6} return just the IP address in scalar
           context
         * Guard against incorrect length scalars being passed in to inet_ntop
           (RT78890)

2012/08/15
2.004   BUGFIXES:
         * Put skip() arguments the right way around in t/ip_mreq.t (RT78986)

2012/08/15
 ** Do not use; see 2.004 **
2.003   CHANGES:
         * Added IPV6_JOIN_GROUP and IPV6_LEAVE_GROUP
         * Added constants and functions required for IP multicast source
           group membership
         * Added TCP_NOPUSH,NOOPT,CONNECTIONTIMEOUT,INIT_CWND,SACK_ENABLE
           (RT78626)

2012/06/06
2.002   CHANGES:
         * Wrap Linux's SOCK_NONBLOCK and SOCK_CLOEXEC constants
         * Added sockopt constants and structure handling functions for IPv4
           multicast (also with thanks to Christian Walde for help on MSWin32)

2012/03/27
2.001   CHANGES:
         * Apply (modified) patch from ppisar@redhat.com to fix memory
           addressing bug with Zero() - RT76067
         * Document that inet_pton() doesn't work on hostnames, only textual
           addresses - RT76010
         * Ignore any existing-but-undefined hints hash members to
           getaddrinfo()

2012/03/10
2.000   CHANGES:
         * Apply (modified) patch from rurban to fix memory overflow bug with
           sockaddr_un() - RT75623
         * Increase to three-digit version suffix in new major version

2012/02/21
1.99    CHANGES:
         * Better implementation of inet_pton() that sets correct size (RT 75074)
         * Added SO_DOMAIN
         * More robust unit tests of address-mangling functions

1.98    CHANGES:
         * Detect presence of sockaddr_in6 and ipv6_mreq; conditionally build
           pack/unpack functions on this
         * Back-compatibility improvements for older perls, back as far as
           5.6.1 (thanks Zefram)
         * Fix for picky compilers or platforms on which size_t doesn't
           printf() correctly by %d
         * Suppress some harmless compile-time warnings about unused variables

1.97    CHANGES:
         * Rewritten Makefile.PL configure-time logic to use only core's
           ExtUtils::CBuilder rather than CPAN's ExtUtils::CChecker
         * Fix implementation of synthesized newSVpvn_flags() to also work on
           threaded 5.10.0
         * Set INSTALLDIRS=perl on perl before 5.11; required as it's
           replacing a core module

1.96    CHANGES:
         * Fix Socket.t to use ok() instead of is() where required - RT73039
         * Complete rewrite of module docs; list all the constants and
           functions, updated SYNOPSIS
         * Added convenient Exporter tag :addrinfo for all the gai/gni-related
           symbols
         * Provide static synthesized newSVpvn_flags() replacement for older
           Perls
         * Implement getnameinfo() NIx_NOHOST and NIx_NOSERV extension flags

1.95    CHANGES:
         * Implement the remaining AI_*, EAI_* and NI_* constants from
           Socket::GetAddrInfo
         * Declare configure-time dependency on ExtUtils::Constants 0.23 for
           when building out of core
         * Initial attempt at dual-life extraction from bleadperl