-
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.
-
Allow compile-time linking to zlib, by defining
RCF_ZLIB_STATIC
in build.
-
ThreadPool refactored,
with simpler constructors and get / set methods.
-
Classes renamed:
I_Endpoint
to Endpoint, I_ServerTransport to ServerTransport, I_ClientTransport
to ClientTransport,
I_SessionState to SessionState, 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.