Posts in category ‘Progress’.
All CppCMS 1.0.0 milestone tasks had completed and thus the second release candidate was released. It contains mostly bug fixes including several security bug fixes. It is expected to be the last RC before the stable version would be delivered.
All CppCMS users please download the RC2 and test it. If no critical problems would be found the stable version would be announced in a week or two.
Security Bug Fixes:
- Fixed a bug when calling
reset_session()would not reset it when session content itself was not changed.
- Fixed a bug that could cause infinite waiting when POST data contained incomplete multi-part data potentially causing DOS.
The protocol between
cppcms clients had changed,
you can't use old
cppcms_scale with newer versions of
cppcms and vise versa.
The protocol now uses absolute 64 bit time-stamp rather then relative one.
- Many new unit tests implemented giving good test coverage for the CppCMS framework.
- Added support of nginx with SCGI protocol to
- Many examples added: Asynchronous I/O, Serialization, Templates Inheritance. Some examples updated to use moder API.
- Fixed a bug that prevented "Keep-Alive" option to work with FastCGI protocol.
- Session cookie was not delete on clear session call with server side session storage.
- Fixed a bug that caused a session value to be unexposed what it was updated.
- Fixed incorrect call of
unsafe_view_builderwhen unsefe option was given
- Fixed status handling according to HTTP/CGI specifications in case of invalid POST input.
- Fixed a bug when in certain situations sockets were not shutdown properly.
- Added better error reporting when the content of invalid type was used during view rendering.
cppcms_runto setup nginx's
PATH_INFOcorrectly according to the options available in the latest version.
The first release candidate of the next version of CppCMS is available - the API can be considered stable from this point and would not be changed in backward incompatible way.
Templates engine improvements:
Added new syntax
<% form block foo %>...<% end %>
as better alternative to:
<% form begin foo %>...<% form end foo %>
Improved error messages in templates compiler such that it gives more clear errors in case of syntax error.
Changed semantics of
application::renderfunction such that it would not override an application that was assigned to the contend (if it was assigned at all)
- Support of session storage in addition to cache storage now providing full scalability of CppCMS services.
- Now it uses same configuration method as CppCMS process - JSON file with optional command line parameters.
cppcms_scalenow can run as Unix deamon and as Windows service.
URL Mapper does not throws by default, but rather create an invalid URL making initial programming easier.
The behavior can be reverted back by setting
misk.invalid_url_throwsoption to true.
shared_mutexsupport to booster.
Provided an experimental support of STLPort 5.2.
Fully refactored views loading and unloading code. The views interface now is documented, public and clear.
Documentation updates, now all public classes and functions have full Doxygen reference documentation.
Added multiple examples and created examples page in Doxygen reference documentation. New examples are:
- JSON RPC
- JSON RPC Chat
- File Upload Example
Internal File Server Improvements:
- Added support of simple URL rewriting
- Reduced memory copying in sending files
Added support of dynamic session storage backend loading as plugins, implemented several session storage backends under
- Berkeley DB
- CppDB with MySql and PostgreSQL servers
Removed dependency on pthreads-win32 under Windows 2000 and XP.
Improved JSON-RPC handling - reduced copying of json objects.
Added support of custom timezone for logging closing #3432220, changed default time zone in the log file to local time rather then GMT.
Performance improvements in TCP Cahce Server.
- Fixed use of deprecated functions in examples, closing #3404317
- Spelling improvements, closing #3206151, thanks Augustin for the contribution.
- Fixed TLS behavior such that TLS pointer destruction, still allows destruction of local objects
- Fixed issue #3441849, Typo in
cppcms::http::context::complition_type, now it is
cppcms::http::context::completion_type, as correct spelling requires.
- Fixed cosmetic issue #3460062
- Fix incorrect condition check in PCRE using
- Fixed bug #3386163, setting
REMOTE_ADDRbehind HTTP Proxy feature was not working.
Lineup with Boost.Locale:
- fixed problems with build with clang
- fixed handing of invalid characters in
MultiByteToWideCharAPI on windows
- Added session specific storage for custom data
- Added support of one time initialization
- Added version number API
- Added an option to clear the connections pool
- Added busy_timeout option to sqlite3 backend.
Changed library version format to Major.Minor.Patch
Majoris updated when the library breaks its ABI or API, should not happen often.
Minoris updated when new features or new API is introduced, The library remains fully backward compatible
Patch- maintenance bug fix release, no changes in public API.
- Fixed bug #3451653 - disconnected connections are recycled to the pool
- Fixed issue #3439445 - build problem on some distributions
CppCMS 0.99.10.1 was released today. It is a bug fix release that includes fixes for several critical bugs that could not wait for 0.99.11 version.
- Fixed a bug that caused an infinite loop in
shared_ptrcounter on Windows platform when multi-core machines are used.
- Fixed a bug that prevented from lock file to be created in demonetization process (regression in 0.99.10)
- Fixed a bug that prevented CppCMS process to shutdown properly when running in prefork mode (regression in 0.99.10).
- Fixed a bug that prevented from JSON-RPC notifications work properly.
- Fixed typo (#3404317)
- Fixed a race condition in access to socket that may occur in some situations on multi-core machines.
booster::nowide::fstreamto follow open flags specifications properly in some cases.
All CppCMS users are encouraged to upgrade to this version - especially windows users.