Revision history for IO-Socket-IP

0.25    2014/01/11 17:19:29
         * Allow both *Host with port and *Port arguments, letting port from
           Host argument take precedence (INET compat)
         * Ensure that a Host/Family-less constructor still constructs a
           socket, by using gai()s AI_ADDRCONFIG hint

0.24    2013/09/19 14:17:22
         * Defend against INADDR_LOOPBACK not being on machines with
           odd networking (e.g. FreeBSD jails) during unit testing

0.23    2013/09/11 17:53:19
         * Check that kernel actually supports SO_REUSEPORT before
           unit-testing it (RT86177)

0.22    BUGFIXES:
         * Always pass 'socktype' hint to getaddrinfo() in unit tests because
           some OSes get upset without it
         * Don't unit-test that sockaddr is updated with a local bind() on
           SOCK_DGRAM sockets because some OSes don't

0.21    CHANGES:
         * Provide a downgrade method to turn an AF_INET-domain socket into a
           real IO::Socket::INET instance
         * Ensure that IO::Socket->new( Domain => ... ) definitely returns a
           socket in the right family

0.20    CHANGES:
         * Skip the IPV6_V6ONLY tests on machines lacking that constant
         * Avoid Socket::inet_pton() in unit tests as Strawberry lacks it
         * Added ->join_addr
         * Respect subclassing argument to ->accept

0.19    CHANGES:
         * More IO::Socket::INET compatibility fixes:
            + Ensure ->connected is false after ->close
            + Ensure that IO::Socket::IP->new(Family => $family) still creates
              an unbound, unconnected socket filehandle

0.18    CHANGES:
         * Work around ->socktype being undef on IO::Socket versions before
           1.35 by fetching ->sockopt( SO_TYPE ) (RT81549)

         * Fix test skip counts in t/21nonblocking-connect-internet.t (RT79393)

0.17    CHANGES:
         * Only pass AI_ADDRCONFIG as getaddrinfo() flag if no other flags
           specified, so the caller can disable it if required.
         * Don't count select() invocations during nonblocking unit test
           because this is too unreliable and races with the kernel/TCP stack

0.16    BUGFIXES:
         * Don't ->close after all connect attempts fail, because
           IO::Socket::INET doesn't do that

0.15    BUGFIXES:
         * (Hopefully) improved ->connect logic for better MSWin32 support
         * Skip testing AI_NUMERICSERV on OSes that don't support it

0.14    BUGFIXES:
         * Second attempt at fixing test skip counts

0.13    BUGFIXES:
         * Updated test skip counts in unit tests so they match the number of
           tests actually skipped

0.12    CHANGES:
         * Ensure that all instances have a defined fileno after construction,
           even in non-blocking mode (RT77726)

0.11    CHANGES:
         * Ignore unrecognised constructor arguments rather than complaining
           about their presence (RT77536)
         * Call $self->connect during constructor because IO::Socket::SSL
           relies on this to happen (RT77536)

0.10    CHANGES:
         * Allow specifying other getaddrinfo flags using GetAddrInfoFlags
           constructor argument (RT75783)
         * Provide a convenient hostname+port string splitting utility method

0.09    CHANGES:
         * Attempt to implement IPV6_V6ONLY sockopt wrapper - not all OSes can
           disable it, so detect and skip those
         * Provide ->sockaddr and ->peeraddr convenience accessors, same as
           IO::Socket::INET (RT75071)
         * Use new NIx_NOHOST and NIx_NOSERV flags to avoid redundant
           getnameinfo() lookups when only one of host or service name is
         * Ensure that errno gets set to EINVAL on getaddrinfo() failures

         * Ignore existing-but-undefined constructor arguments
         * Avoid locale-specific error message testing of $!
         * Updates to unit tests for cygwin

0.08    CHANGES:
         * Depend on Socket 1.95 now a full dual-life release has been made
         * Set the AI_ADDRCONFIG getaddrinfo hint
         * Fix some spelling mistakes/typoes
         * MSWin32 fixes:
            + MSWin32 uses select() exceptfds rather than writefds to report
              on nonblocking connect() failure
            + MSWin32 uses EWOULDBLOCK rather than EINPROGRESS to indicate
              nonblocking connect()

         * Ensure ->socket protocol argument is always defined
         * Bugfix for (e.g.) NetBSD, which gets upset at protocol hint without
           socktype hint to getaddrinfo()
         * Pass 'type' rather than 'proto' to constructor in t/11sockopts.t to
           avoid MSWin32 test failures
         * Localise $1/$2 to placate [perl #67962]

0.07    CHANGES:
         * Prepare for Socket::getaddrinfo() in core; prefer it to
         * Implement Family constructor arg
         * Optional registration with IO::Socket
         * Documentation rewordings
         * Bugfix to local socket connect tests - test using blocking rather
           than nonblocking sockets to guarantee synchronous packet delivery
         * Bugfix to t/04, t/05 - skip if unable to bind ::1

0.06    CHANGES:
         * Implement nonblocking connect
         * Implement LocalAddrInfo and PeerAddrInfo args
         * Example of nonblocking usage, using Net::LibAsyncNS

0.05    CHANGES:
         * Implement combined ->bind and ->connect operations
         * Accept "host:service" as *Addr args, and PeerAddr as sole
           constructor argument
         * Accept "name(port)" as service arguments

0.04    CHANGES:
         * Try to yield the most appropriate connect/bind/socket error
         * Implement sockhost/peerhost methods to match ::INET, moved hostname
           methods to sockhostname/peerhostname
         * Work around IO::Socket bug where ->accept'ed sockets do not get
           ->sockdomain or ->socktype

0.03    CHANGES:
         * Set $@ to raise error messages from constructor

         * Correctly implement 'Type' constructor argument
         * Test SO_BROADCAST on udp instead of tcp as some OSes forbid it

0.02    BUGFIXES:
         * Not all OSes return true sockopts as 1; test simply for non-zero
         * Gracefully skip IPv6 tests if Socket6 unavailable

0.01    First version, released on an unsuspecting world.