Subject: | Switch from IO::Socket::INET6 to core modules IO::Socket::IP and Socket |
I'd like to see that Net::Server switches from using
an oldish IO::Socket::INET6 (and Socket6) and starts using
IO::Socket::IP (and Socket) for the following reasons:
- IO::Socket::IP is a Perl core module since Perl 5.19.8,
(and works with older versions of perl just fine),
the IO::Socket::INET6 and Socket6 are not core modules
and need to be installed extra;
- like IO::Socket::INET6, the newer IO::Socket::IP does
support both IPv4 and IPv6 (but does not require Socket6);
- IO::Socket::IP offers some functionality that is not
available (or is difficult) with IO::Socket::INET6, like
binding to a link-local IPv6 address (e.g. fe80::1%lo0 ),
which may be desirable for implementing some net services;
- the author of IO::Socket::INET6 (Shlomi Fish) is still
around and does some support of his old module, but stated
on more than one occasion that one should switch to a
newer and better maintained IO::Socket::IP :
https://rt.cpan.org/Public/Bug/Display.html?id=81125
https://rt.cpan.org/Public/Bug/Display.html?id=68282
2011-11-28 SHLOMIF:
I should note that IO::Socket::IP aims to be
a better alternative to IO::Socket::INET6
- several perl applications and modules have already switched
to IO::Socket::IP (like IO::Socket::SSL, HTTP::Tiny, Net::HTTP,
Mail::SpamAssassin, Amavis). Both modules can coexist, but it
seems awkward dragging along the Socket6 and IO::Socket::INET6
just for the sake of Net::server;
It would in principle be possible for Net::Server to use either
the IO::Socket::IP or IO::Socket::INET6 or IO::Socket::INET
depending on availability, although dropping support for
IO::Socket::INET6 altogether can simplify logic in the code.
Regardless of the Net::Server configuration one can decide
to use IO::Socket::IP vs. IO::Socket::INET in the BEGIN phase
based on availability, and avoid dynamic plumbing altogether.
If IO::Socket::IP is successfully loaded, it should be used
for all socket operations.
If there is a decision to go for this proposal but the concern
is lack of development time, I'm willing to prepare an initial
patch to implement this.