1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287
|
Revision history for IO-Socket-IP
0.43 2024-11-25
[CHANGES]
* Swapped unit tests from `Test::More` to `Test2::V0`
* Fixed some documentation typoes
(thanks Igor Sobrado Delgado) (RT157201)
0.42 2023-07-25
[CHANGES]
* Put error string in `$IO::Socket::errstr` as done by
IO::Socket v1.45
* Updated for Perl v5.14 - use `package NAME VERSION` syntax
[BUGFIXES]
* Fix typo 'behvior' (RT133467) (thanks ferivoz@riseup.net)
* Fix for DragonflyBSD and IPV6_V6ONLY from core perl (RT148293)
0.41 2020-09-15 16:59
[CHANGES]
* Updated to `=head2 barename` documentation style
[BUGFIXES]
* Remember to declare configure_requires Module::Build
0.40 2020-09-15 16:41
[CHANGES]
* Don't ship a Makefile.PL
* Updated docs about `-register` option
[BUGFIXES]
* Ensure safety under default-strict (RT133322)
0.39 2017/03/06 16:40:30
[BUGFIXES]
* Handle EOPNOTSUPP in response of efforts to disable V6ONLY
(RT119780) (thanks XENU)
0.38 2016/08/02 18:33:50
[CHANGES]
* Support setting custom socket options with new 'Sockopts'
constructor parameter
[BUGFIXES]
* Restore blocking mode after ->connect errors (RT112334)
0.37 2015/03/12 20:44:07
[CHANGES]
* Earlier detection/reporting of erroneous Listen + Peer* argument
combination; don't rely on resolveable hostname to do it (RT92930)
[BUGFIXES]
* Skip t/16v6only.t on irix (RT102662)
* Remember to eval() $IO::Socket::VERSION in case it's a devel
release (RT101954)
* s/Port/LocalPort/ in unit tests (RT96064)
0.36 2014/01/10 20:54:58
[BUGFIXES]
* Always bind() on MSWin32 because Windows doesn't like it if we
listen() having not done so (RT101396)
0.35 2015/01/02 19:45:20
[BUGFIXES]
* Restore blocking mode after timeout connect immediate success
(RT100947)
* Avoid CORE:: prefixing so global override modules work (RT101174)
* Ensure that ->peer{host,port,hostname,service} never die even when
unconnected (RT98759)
0.34 2014/12/03 00:04:56
[BUGFIXES]
* Don't select() for read-readiness when waiting for non-blocking
connect() because it upsets VMS (RT100654)
0.33 2014/11/21 16:17:39
[BUGFIXES]
* Use SOL_SOCKET/SO_ERROR sockopt rather than 2nd connect() error
hoisting to detect nonblocking connect/failure when implementing
Timeout (RT98976) (thanks Arthur Axel 'fREW' Schmidt)
0.32 2014/09/12 10:11:27
[CHANGES]
* Implementation of Timeout for ->connect (RT92075)
0.31 2014/07/11 01:24:49
[BUGFIXES]
* A better fix for subclassing ->connect (RT95983) because 0.30 broke
the way IO::Socket::SSL works (RT97050)
0.30 2014/07/03 23:28:43
[CHANGES]
* Invoke $self->connect fully-qualified in case of subclasses with
override (RT95983)
* Added extra diag() call in t/15io-socket.t (RT96914)
0.29 2014/02/24 16:06:29
[BUGFIXES]
* Workaround for OSes that disobey AI_ADDRCONFIG and yield AIs on
families the kernel will not support anyway (e.g. HPUX)
* Workaround for OSes that lack getprotobyname() (e.g. Android)
0.28 2014/02/10 16:17:59
[CHANGES]
* Renamed internal _configure method to _io_socket_ip__configure to
avoid clashes with modules that try to subclass IO::Socket::INET
[BUGFIXES]
* Disable AI_ADDRCONFIG during one-sided 'v6 tests as sometimes it
would otherwise fail
* Skip the SO_BROADCAST test on OSes that fail with EACCES (RT92502)
0.27 2014/01/20 18:08:31
[BUGFIXES]
* Apply a short timeout to unit tests that probe for internet
connectivity, in case of bad firewalls, etc... (Perl RT121037)
* Defend against machines with IN6ADDR_LOOPBACK not being "::1" in
unit tests, similar to the INADDR_LOOPBACK case (RT92295)
0.26 2014/01/16 12:20:02
[CHANGES]
* Set $VERSION in BEGIN block before 'use base' so that
Acme::Override::INET still works
* Various minor improvements to documentation
0.25 2014/01/11 17:19:29
[BUGFIXES]
* 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
[BUGFIXES]
* Defend against INADDR_LOOPBACK not being 127.0.0.1 on machines with
odd networking (e.g. FreeBSD jails) during unit testing
0.23 2013/09/11 17:53:19
[BUGFIXES]
* 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)
BUGFIXES:
* 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.
BUGFIXES:
* 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
required
* Ensure that errno gets set to EINVAL on getaddrinfo() failures
BUGFIXES:
* 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()
BUGFIXES:
* 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
Socket::GetAddrInfo::getaddrinfo()
* 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
BUGFIXES:
* 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
BUGFIXES:
* 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.
|