- Replace
winapidependency withwindows-sys(rust-lang#303).
Socket::join_ssm_v4andSocket::leave_ssm_v4(rust-lang#298).Socket::set_recv_tosandSocket::recv_tos(rust-lang#299).
- Fix OpenBSD build (rust-lang#291).
- Libc v0.2.114 fixed an issue where
ip_mreqnwhere was not defined for Linux s390x.
Socket::set_fib: setsSO_SETFIB(rust-lang#271).Socket::attach_filter,SO_ATTACH_FILTER(https://github.com/rust-lang/socket2/commit/6601ed132b37d6e9d178b34918bfb0b236800232).Socket::detach_filter,SO_DETACH_FILTER(https://github.com/rust-lang/socket2/commit/6601ed132b37d6e9d178b34918bfb0b236800232).Socket::{header_included, set_header_included}: sets or getsIP_HDRINCL(https://github.com/rust-lang/socket2/commit/f9e882ee53c0b4e89c5043b6d709af95c9db5599).Socket::{cork, set_cork}: sets or getsTCP_CORK(https://github.com/rust-lang/socket2/commit/50f31f18aac8fd6ef277df2906adeeed9fa391de).Socket::{quickack, set_quickack}: sets or getsTCP_QUICKACK(https://github.com/rust-lang/socket2/commit/849eee2abc5d5170d2d3bc635386a2ba13b04530).Socket::{thin_linear_timeouts, set_thin_linear_timeouts}: sets or getsTCP_THIN_LINEAR_TIMEOUTS(https://github.com/rust-lang/socket2/commit/24c231ca463a17f51e53e7a554c7915a95bdbcc7).Socket::{join_multicast_v4_n, leave_multicast_v4_n}: extends the existing multicast API by allowing an index to be used (in addition to an address) (https://github.com/rust-lang/socket2/commit/750f83618b967c620bbfdf6ca04de7362bdb42b5).
Socket::(set_)freebind_ipv6, getter and setter forIPV6_FREEBIND.
- Compilation on OpenBSD.
- Usage of incorrect flag in
Socket::(set_)freebind.
- Add
SockAddr::new - Support for
TCP_USER_TIMEOUT. - Support for
IP_BOUND_IF. - Support for
IP_TRANSPARENT. - Enable
Socket::typeon all platforms. - Support for uclibc (for Haiku support).
- Add DragonFly support for TCP keepalive (
KEEPINTVL/KEEPCNT). - Documentation for proper use of
SockRef::from, and the improper use. - Assertion in
SockRef::fromto ensure the raw socket valid.
- Compilation on Haiku.
- Setting TCP keepalive on Haiku and OpenBSD (by not setting it as it's not supported).
- Size check for abstract namespaces in
SockAddr::unix. - Set noinherit on accepted sockets on Windows when opening sockets.
- New
allfeature: enables API that is not available on all tier 1 platforms. SockReftype: used to create a reference to an existing socket, e.g.std::net::TcpStream, making all methods ofSocketavailable on it.- Support for vectored I/O:
Socket::recv_vectored,Socket::recv_with_flags.Socket::recv_from_vectored,Socket::recv_from_vectored_with_flags.Socket::send_vectored,Socket::send_vectored_with_flags.Socket::send_to_vectored,Socket::send_to_vectored_with_flags.- In the
ReadandWriteimplementations.
Socket::new_raw,Socket::pair_rawandSocket::accept_rawmethods that don't set common flags, such as the close-on-exec flag.Socket::accept4:accept4(2)system call.Socket::sendfile: thesendfile(2)system call.Socket::set_cloexec: set the close-on-exec flag on Unix.Socket::set_no_inherit: set inherit handle flag on Windows.Socket::set_nosigpipe: setSO_NOSIGPIPEon Apple targets.Socket::set_markandSocket::mark, setting/getting theSO_MARKsocket option.Socket::set_cpu_affinityandSocket::cpu_affinity, setting/getting theSO_INCOMING_CPUsocket option.Socket::set_mssandSocket::mss, setting/getting theTCP_MAXSEGsocket option.Socket::set_freebindandSocket::freebind, setting/getting theIP_FREEBINDsocket option.Socket::bind_deviceandSocket::device, setting/getting theSO_BINDTODEVICEsocket option.- Adopted Mio's TCP keepalive API:
Socket::keepalive_time,Socket::keepalive_interval,Socket::keepalive_retries,Socket::set_tcp_keepalive.
Socket::is_listenergetting theSO_ACCEPTCONNsocket option.Socket::domaingetting theSO_DOMAINsocket option.Socket::protocolgetting theSO_PROTOCOLsocket option.Socket::typegetting theSO_TYPEsocket option.Domain::for_address: the correctDomainfor astd::net::SocketAddr.Type::nonblocking: setSOCK_NONBLOCK.Type::cloexec: setSOCK_CLOEXEC.Type::no_inherit: setHANDLE_FLAG_INHERIT.SockAddr::init: initialises aSockAddr.MaybeUninitSlicetype: a version ofIoSliceMutthat allows the buffer to be uninitialised, used inSocket::recv_vectoredand related functions.RecvFlagstype: provides additional information about incoming messages, returned bySocket::recv_vectoredand related functions.TcpKeepalivetype: configuration type for a socket's TCP keepalive parameters.
- Repository moved to https://github.com/rust-lang/socket2.
- BREAKING: Changed constructor functions into constants:
Domain::ipv4=>Domain::IPV4.Domain::ipv6=>Domain::IPV4.Domain::unix=>Domain::UNIX.Domain::packet=>Domain::PACKET.Type::stream=>Type::STREAM.Type::dgram=>Type::DGRAM.Type::seqpacket=>Type::SEQPACKET.Type::raw=>Type::RAW.Protocol::icmpv4=>Protocol::ICMPV4.Protocol::icmpv6=>Protocol::ICMPV6.Protocol::tcp=>Protocol::TCP.Protocol::udp=>Protocol::UDP.
- BREAKING: Changed the signature of
Socket::recv,Socket::recv_vectoredand related methods to accept unitialised buffers. TheReadimplementation can be used to read into initialised buffers. - BREAKING: Renamed
SockAddr::as_stdtoas_socket. - BREAKING: Renamed
SockAddr::as_inettoas_socket_ipv4. - BREAKING: Renamed
SockAddr::as_inet6toas_socket_ipv6. - BREAKING: Replace all previously existing features (reuseport, pair, unix) with a new all features (see above for description of the all feature).
- Use
accept4(2)withSOCK_CLOEXECinSocket::accept, reducing the amount of system calls required. - Marked many functions as constant.
- The
Readimplementation now callsrecv(2)rather thanread(2). - Split the
implblock for theSockettype to create groupings for setting and getting different level socket options usingsetsockopt(2)/getsockopt(2). - Updated
winapidepdency to version 0.3.9 and dropped unused features.
- Removed the
-rssuffix from the repository name. - BREAKING: Removed
SockAddr::from_raw_parts, useSockAddr::initinstead. - BREAKING: Removed
Socket::into_*functions and replaced them with aFromimplementation:Socket::into_tcp_stream=>TcpStream::from(socket).Socket::into_tcp_listener=>TcpListener::from(socket).Socket::into_udp_socket=>UdpSocket::from(socket).Socket::into_unix_stream=>UnixStream::from(socket).Socket::into_unix_listener=>UnixListener::from(socket).Socket::into_unix_datagram=>UnixDatagram::from(socket).
- Removed
cfg-ifdependency. - Remove
redox_syscalldepdency.
- Fixes the Andoid, Fuchsia, Haiku, iOS, illumos, NetBSD and Redox (nightly only) targets.
- Correctly call
recv_frominSocket::recv_from_with_flags(calledrecvpreviously). - Correctly call
send_toinSocket::send_to_with_flags(calledrecvpreviously). - Use correct inmutable references in
Socket::send_with_flagsandSocket::send_out_of_band. - Use
IPPROTO_IPV6inSocket::join_multicast_v6on Windows. - Use
c_intinstead ofi32where appropriate.
- Fixes the Fuchsia target.
Socket::devicenow returns aVec<u8>rather thanCString.Socket::bind_devicenow accepts a&[u8]rather than&CStr.
Socket::connect_timeoutwas added back.
- Changed
Socket::set_cpu_affinityandSocket::cpu_affinityto use an immutable reference.
- Use
SO_LINGER_SECon macOS forSocket::get/set_linger.
- Don't assume the memory layout of
std::net::SocketAddr. - Other changes omited