- Fixed "failed to parse address" error that occurs in patched PHP versions for Debian 7 and Ubuntu 16.04.
- NOTE: Persistent connections still fail in those environments, and there's no possible workaround, short of getting a non-patched PHP version or upgrading to Debian 8 or Ubuntu 16.10.
- Fixed a streaming issue with newer PHP 5.6 versions and later.
- Stream::setIsBlocking() is only implicitly called if needed (i.e. for encrypted connections), ensuring compatibility with web hosts that for bizzare reasons have disabled stream_set_blocking().
- Doc and test fixes that now ensure large code coverage.
- Added fragments to exceptions, allowing retrieval of incomplete receives' contents, and byte count on incomplete sends.
- Changed Stream to use an fread/fwrite duo instead of stream_copy_to_stream() for the sake of stability.
- Tweaked Stream::isAcceptingData() and NetworkStream::isAvailable(), in order to work around a reproducible hang on Linux.
- Doc fixes.
- Support for encrypted connections. Note that due to known issues with PHP itself, encrypted connections may be unstable (as in "sometimes disconnect suddenly" or "sometimes hang when calling TcpClient::isDataAwaiting() without a timeout").
- Stream::isAcceptingData() and Stream::isDataAwaiting() now accept an optional timeout, modeled after stream_select().
- Changed sending to retry indefinetly unless the connection is broken, thanks to isDataAwaiting()'s new ability. Receiving can still timeout.
- Chnaged the PHAR stub to not fail when reading the hash fails.
- Doc and CS fixes.
Added locking support at TcpClient, particularly for persistent connections. Also some doc fixes.
Lots of reorganization and initial test suite.
- Renamed all "SocketTransmitter" classes to "Tcp".
- Added test suite with nearly complete code coverage. Remaining coverage is due to forward compatibility issues.
- Added FilterCollection, in turn allowing for the same filter to be applied more than once.
- Added NetworkStream, and made Tcp* classes inherit from it. This new class contains a new method called shutdown().
- IPv6 addresses must now be written literally, without the surrounding "[" and "]".
- TcpServerConnection can now accept IPv6 connections.
- Merged sendStream() into send().
- Added $offset and $length to send().
- Removed redundant error variables in TcpServerConnection.
- Removed the TcpServerConnection::isServer() function (can't tell apart server and client).