The epoll_reactor now supports the use of regular file descriptors with
posix::stream_descriptor, provided the I/O operations on them never fail
with EAGAIN or EWOULDBLOCK. If the descriptor cannot be added to the
epoll set using epoll_ctl, and errno is EPERM (indicating an unsupported
descriptor type), then no error condition is raised. Instead, any
operation which would require a trip through the reactor will fail.
The consuming_buffers template, which is used internally by the composed
read and write operations, did not correctly satisfy the buffer sequence
requirements as its iterator was not bidirectional. Rather than acting
as a proxy buffer sequence, the reworked consuming_buffers template
instead produces fixed-size buffer sequences as required.
- SSLv2 has been completely removed from OpenSSL, even without OPENSSL_NO_SSL2
- there is a new threading API without locking callbacks
- struct SSL_CTX has been made opaque and must be used via accessor functions
- some cleanup functions have been removed
The buffer sequence requirements are now defined in terms of new functions
buffer_sequence_begin() and buffer_sequence_end(). As a result, the
mutable_buffer and const_buffer classes satisfy the buffer sequence
requirements. The mutable_buffers_1 and const_buffers_1 classes have been
deprecated.
This change makes use_future consistent with the networking TS. In
particular, the package() function has been removed; this functionality
is now accessed via use_future::operator().
This change makes async_result consistent with the networking TS.
The older single-parameter form of async_result, and the handler_type
trait, have been deprecated. They have been retained for backwards
compatibility, and existing specialisations of these traits will still
be used. However, asynchronous operations that use the older form of
async_result/handler_type will not interoperate with completion tokens
that specialize only the new two-parameter async_result. For this
reason, the completion token types implemented by asio continue to
provide specialisations of the older form of async_result and
handler_type.
The public inheritance of basic_socket_streambuf<> from basic_socket<> has been
deprecated. A reference to the underlying socket can now be obtained via the
basic_socket_iostream::socket() or basic_socket_streambuf::socket() member
functions.
The basic_socket_streambuf::puberror() function has been deprecated. The
basic_socket_streambuf::error() function should be used instead.
For example, instead of basic_socket<Protocol, SocketService> we now have
simply basic_socket<Protocol>. The old interface can be enabled by defining
the ASIO_ENABLE_OLD_SERVICES macro.