-
Fix clock skew issues on Linux by using
CLOCK_MONOTONIC
.
Only enabled if RCF_USE_CLOCK_MONOTONIC
is defined.
-
Add support for IPv6 UDP multicasting.
-
Add support for Basic and NTLM proxy authentication when using HTTPS.
NTLM authentication is only supported in Windows builds.
-
Fix various other bugs reported by email and on forums.
-
Fix compatibility issues with Visual Studio 2015.
-
Fix compatibility issues with Boost 1.60.0.
-
Downloads:
-
Significant improvements to HTTP/HTTPS support, including
-
Support for HTTP reverse proxies.
-
Maintaining RCF sessions across multiple HTTP connections.
-
Publish/subscribe now supported over HTTP and HTTPS.
-
Fix for performance issue with asio
deadline_timer
objects being associated with the wrong io_service
object.
-
UdpClientTransport
-
disconnect()
should close the local socket, so subsequent calls use a new socket and
port.
-
UdpServerTransport
-
fix for thread init functors not being called.
-
Schannel-based SSL - change default protocol from SSL 3.0 to TLS 1.0
.
-
Downloads:
-
Fix default settings of
RCF_FEATURE_SF
and RCF_FEATURE_BOOST_SERIALIZATION
config macros, to respect legacy RCF_USE_SF_SERIALIZATION
and RCF_USE_BOOST_SERIALIZATION
macros.
-
Fix compiler error when deriving custom class from
RcfClient<>
.
-
Fix compiler warnings appearing in Visual Studio 2013 Update 3, about
deprecated functions in Winsock.
-
Downloads:
-
Fix potential busy loop for multithreaded UDP servers.
-
Expose
RcfServer::getFilterService()
for code using legacy custom filters.
-
Fix for
RCF_USE_PROTOBUF
define not working.
-
Fix potential handle leak in Windows thread implementation (
win_thread.hpp
).
-
Fix for thread joining in Windows thread implementation (
win_thread::join()
)
- contributed by acDev on support forums.
-
Fix bug in shutdown order for
RcfServer
.
-
Implement
RCF_OPENSSL_STATIC
define, to allow static linking to OpenSSL.
-
Explicitly unload zlib and OpenSSL DLL's, when deinitializing RCF.
-
Implement serialization for various QT classes - see
SF/Q*.hpp
.
Contributed by acDev on support forums.
-
Fix serialization for
std::vector<bool>
.
-
Implement serialization for
std::bitset<>
.
-
Implement
SF_SERIALIZE_ENUM_CLASS
macro, to simplify serialization of C++11 enum classes.
-
Fix compiler error when serializing
shared_ptr<const T>
.
-
Publish/subscribe - published messages are now sent asynchronously and
concurrently on all subscriber connections.
-
Implement
Publisher::getSubscriberCount()
,
to return number of subscriptions for a publisher.
-
Downloads:
-
More informative error messages upon certificate validation failure,
when using OpenSSL.
-
Fix for thread local cache leaks reported by Visual
Leak Detector.
-
Fix order of destruction issue in
RcfServer
destructor, when using multiple server transports.
-
Downloads:
-
Allow compile-time linking to zlib, by defining
RCF_ZLIB_STATIC
in build.
-
Downloads:
-
Fix potential order of destruction problem in
SessionTimeoutService
.
-
Fix bool conversion compiler error in
RcfSession::hasDefaultServerStub()
(reported on gcc 4.6.3) .
-
Accumulate multiple
ByteBuffer
's
in SSPI filter, to prevent potential fragmentation of network send operations.
-
ThreadPool
refactored,
with simpler constructors and get / set methods.
-
Classes renamed:
I_Endpoint
to Endpoint
, I_ServerTransport
to ServerTransport
, I_ClientTransport
to ClientTransport
,
I_NetworkSession
to
NetworkSession
, I_RemoteAddress
to RemoteAddress
.
-
Removed
NamedPipeEndpoint
class. Code using NamedPipeEndpoint
should use Win32NamedPipeEndpoint
or UnixLocalEndpoint
instead.
-
Refactoring and simplifications to SSL functionality:
-
Added
RCF::setSslImplementation()
,
RcfServer::setSslImplementation()
and ClientStub::setSslImplementation()
, to configure whether RCF uses
Schannel or OpenSSL.
-
Renamed
setSslCertificate()
to setCertificate()
, and setSslCaCertificate()
to setCaCertificate()
.
-
Merged certificate validation callback signature, from
boost::function<bool(OpenSslEncryptionFilter &)>
and boost::function<bool(SspiFilter &)>
, to boost::function<bool(I_Certificate *)>
.
-
Merged
setSchannelCertificateValidationCb()
and setOpenSslCertificateValidationCb()
, to setCertificateValidationCallback()
.
-
Renamed
setSchannelDefaultCertificateValidation()
to setEnableSchannelCertificateValidation()
.
-
Added
Win32Certificate::getCertificateName()
, Win32Certificate::getIssuerName()
, X509Certificate::getCertificateName()
, and X509Certificate::getIssuerName()
functions.
-
Referencing arbitrary Windows stores from
PfxCertificate::addToStore()
and StoreCertificate::StoreCertificate()
, using the Win32CertificateLocation
and Win32CertificateStore
enums.
-
Added
StoreCertificateIterator
class, for iterating through certificates in a Windows store.
-
Downloads:
-
Add dummy parameters to
RCF::init()
and RCF::RcfInitDeinit::RcfInitDeinit()
, to trap compiler define mismatches
when building RCF as a DLL.
-
Server throws an exception immediately, if a client specifies a ping-back
interval that is less than the minimum ping-back interval of the server.
-
Downloads:
-
Fix compatibility with Boost 1.53.0, by removing usages of
boost::shared_static_cast<>
.
-
Increase the maximum number of RCF methods in a RCF interface, from 100
to 200. If you need more than 100 methods, define
RCF_MAX_METHOD_COUNT=200
in
your build.
-
zlib and OpenSSL libraries are now loaded dynamically at runtime, rather
than linked. This means that if you are building RCF with
RCF_USE_ZLIB
or RCF_USE_OPENSSL
,
you no longer need to link to zlib and OpenSSL. RCF will load the zlib
and OpenSSL libraries at runtime, on the first execution of any compression
code, or OpenSSL-based encryption code.
-
Changed Visual Studio demo solution, to build and use a RCF DLL.
-
Changed cmake demo projects, to link against
pthread
and dl
on non-Windows
platforms.
-
Downloads:
-
Trigger compiler error if user defines
UNICODE
or _UNICODE
when building
RCF on non-Windows platforms.
-
Fix compiler error when using
RCF_USE_BOOST_FILESYSTEM
together with RCF_USE_BOOST_SERIALIZATION
.
-
Downloads:
-
Fix bug with
ClientStub::setEnableCompression()
not applying compression in some circumstances.
-
Downloads:
-
Add demo solution for Visual Studio 2012.
-
Add workaround for IOCP
bug in Windows 8 and Windows Server 2012.
-
Add SF serialization for various C++0x types:
std::unique_ptr<>
, std::tuple<>
, std::shared_ptr<>
, std::array<>
. See Serialization.
-
Add PDF
version of RCF User
Guide.
-
Downloads:
-
Fix compiler error occuring on gcc 4.7+.
-
Fix compiler error occuring on clang.
-
Downloads:
-
Fix compiler error when
RCF_USE_BOOST_SERIALIZATION
is defined but not RCF_USE_SF_SERIALIZATION
.
-
Improve JSON-RPC response message from server, when server fails to parse
JSON-RPC request.
-
Downloads:
-
Configuration of RCF logging (see Appendix
- Logging).
-
Disable
SIGPIPE
signals
on non-Windows platforms.
-
Downloads:
-
Reinstate support for UNIX
domain socket transports.
-
Preserve last file modification timestamps, when transferring files.
-
Add
I_ServerTransport::getInitialNumberOfCOnnections()
/ I_ServerTransport::setInitialNumberOfCOnnections()
to get and set the initial number of
listening connections that are created when a server transport starts.
Default value is 1.
-
Fix Winsock compiler errors in Visual Studio 2003 demo projects, by defining
WIN32_LEAN_AND_MEAN
.
-
Downloads:
-
Introduce
RCF_USE_BOOST_ASIO
configuration macro, to build RCF against the version of Asio that is
in Boost. If RCF_USE_BOOST_ASIO
is not defined, RCF will be built against the version of Asio that is
included in RCF.
-
Fix compiler errors when building on Cygwin. For Cygwin builds,
RCF_USE_BOOST_ASIO
is defined automatically.
-
Fix bug with asynchronous call dispatching, when used with oneway calls.
-
Fix possible busy loop in
RCF_VERIFY()
macro.
-
Downloads:
-
This is a bug-fix release for RCF 1.3.
-
Fix for compiler error when using
signed
char
in RCF method signatures.
-
Fix performance problem when using
RCF::SspiFilter
.
Multiple small message chunks are now merged into a single larger chunk
to improve network performance.
-
Improve SF serialization performance. Only call
typeid()
when necessary.
-
Reduced SF archive sizes. Encode small integers using a single byte rather
than 4 bytes.
-
Fix excessive CPU usage when using multithreaded thread pools with Boost.Asio
based transports.
-
Fix for
boost::any
serialization. Empty boost::any
instances were causing an exception
to be thrown.
-
Fix bug in client-side timeout logic when polling network connection
using Windows
MsgWaitForMultipleObjects()
function.
-
Services can no longer be added or removed while an
RcfServer
is running.
-
Fix potential null pointer crash in marshaling logic.
-
Rename variables named signals and slots in order not to interfere with
QT preprocessor.
-
Fix preprocessor redefinition which was causing a compiler warning on
OSX.
-
Downloads:
-
Support for IPv6.
-
IP-based access rules, to grant or deny access to IP-based servers.
-
IP-based client transports able to bind to a specific local interface.
-
Client able to query for size of its latest request and response messages.
-
User data fields in request and response headers.
-
Running multiple server transports on the same thread pool.
-
Server-side caching of application objects.
-
Default max max message length changed from 10Kb to 1Mb.
-
Maximum number of methods in an RCF interface increased from 35 to 100.
-
Extended auto-versioning to negotiate archive version as well as runtime
version.
-
SF serialization
-
Support for
tr1
containers and tr1
smart pointers.
-
Support for
boost::intrusive_ptr<>
.
-
Serialization of
std::wstring
changed, to use UTF-8.
-
Boost.Serialization serialization of
RCF::Exception
now includes error arguments as well as the error message.
-
Fix byte ordering of fast vector serialization, for big-endian platforms.
-
Improved efficiency of Boost.Asio based server transports - no memory
allocations when reading or writing network data.
-
For Boost.Asio based server transports, added
AsioServerTransport::getIoService()
to expose the internal boost::asio::io_service
object.
-
Added complete example of server-to-client callbacks, to User Guide.
-
Added FAQ on server-side detection of client disconnection.
-
Compatibility
-
Support for Visual Studio 2010 compiler.
-
Dropped support for mingw gcc 3.2 & 3.3.
-
Dropped support for Borland C++ Builder 2006.
-
Tested against Boost versions up to 1.45.0.
-
Downloads:
-
Support use of Protocol
Buffers-generated classes, in RCF interfaces.
-
Support Protocol Buffers-based
marshaling protocol.
-
Support for batched oneway calls.
-
Improved error messages, with context-specific arguments.
-
Improvements to versioning - SF archive version now passed in message
header.
-
Signature of SF serialization functions changed, to remove redundant
version parameter.
-
Calling
serializeParent()
no longer requires type registration.
-
serializeParent()
moved into SF
namespace.
-
Added configuration macro to control behavior on assert (
RCF_ALWAYS_ABORT_ON_ASSERT
).
-
Fix serialization of
RemoteException
,
when using Boost.Serialization.
-
Fix several regressions introduced in 1.1.
-
Fix for thread-safety issue with pingback functionality.
-
Fix for subsecond timeouts on Unix platforms.
-
Fix compilation errors on Windows, if
_WIN32_WINNT
<= 0x0500
.
-
Tested against Boost versions up to 1.42.0.
-
Dropped support for gcc 2.95.
-
Updates to the RCF User Guide:
-
Added documentation for publish/subscribe topics.
-
Added documentation for Protocol Buffer support.
-
Rewrote section on Versioning.
-
Documented workaround for internal compiler error with Borland
C++Builder 2007.
-
Added release notes.
-
Downloads:
-
Ping function added to
RCF::ClientStub
.
-
Server-to-client pingbacks, for maintaining connectivity during long-running
calls (
RCF::PingBackService
).
-
Server-to-client callbacks.
-
Dynamic thread pool grows and shrinks, to accommodate client load. User
level code no longer needs to call
ThreadManager::notifyBusy()
.
-
Progress callbacks on all transports.
-
Schannel-based transport filter, for SSL encryption on Windows platforms
(
RCF::SchannelFilter
).
-
Support for
__attribute__(visibility())
when exporting RCF from shared libraries
with GCC 4.x.
-
Memory usage optimizations.
-
Tested against Boost versions up to 1.39.0.
-
Downloads:
-
Support for more compilers (Intel C++ 9 and 10.1 for Windows, GCC 4.3)
-
Support for more platforms (FreeBSD and OS X).
-
Supports use of UNIX domain sockets as transport (
RCF::UnixLocalEndpoint
).
-
Tested against Boost versions up to 1.37.0.
-
Downloads:
-
Win32 named pipe transport implementations (
RCF::Win32NamedPipeEndpoint
).
-
Boost.Thread no longer required.
-
UDP multicasting and broadcasting.
-
SF serialization for
boost::tuple
,
boost::variant
, and boost::any
.
-
Support for exporting RCF from a DLL.
-
Tested against Boost versions up to 1.35.0 and Boost.Asio versions from
0.3.8.
-
Downloads:
-
Zero-copy, zero-heap allocation core for fast and scalable performance.
-
Kerberos and NTLM authentication and encryption on Windows platforms.
-
OpenSSL filter, for SSL authentication and encryption.
-
Server-side multithreading.
-
Server-side session objects.
-
Built-in runtime versioning, for backward and forward runtime compatibility.
-
Robust publish/subscribe functionality.
-
Support for legacy compilers, in particular, Visual C++ 6, Borland C++
Builder 6, and GCC 2.95.
-
Support for 64-bit compilers.