drogon/ChangeLog.md

37 KiB
Raw Blame History

Changelog

All notable changes to this project will be documented in this file.

Unreleased

1.9.3 - 2024-02-09

API changes list

  • Added getParameter() and getOptionalParameter().

  • Change drogon::MultiPartParser's parameters data type.

  • Use std::string_view for WebSockets.

Changed

  • Add support for gentoo linux, dev-db/mariadb contains mysql.

  • Introduce cpplint to the CI.

  • Enable readability/alt_tokens for cpplint.

  • Use clang-format-17.

  • Add newline at EOF.

  • Enable readability/inheritance for cpplint.

  • Enable build/explicit_make_pair for cpplint.

  • Enable build/include_order for cpplint.

  • Enable build/header_guard for cpplint.

  • Enable build/storage_class for cpplint.

  • Enable readability/multiline_string for cpplint.

  • Alias the safe hashmap template.

  • Simplify traits in utils.

  • Enhancement: extend drogon::ContentType for file handling.

Fixed

  • Fix a wrong place of return.

  • Fix drogon::util::fromString().

1.9.2 - 2024-01-18

API changes list

  • Feature: Integrate spdlog as logging backend.

  • Support asynchronous sending of chunked responses.

Changed

  • Modify the configuration file templates in drogon_ctl.

  • Use execute_process instead of exec_program in FindJsoncpp.cmake.

  • GitHub Action to find typos in the codebase using codespell.

  • add discord link to readme.

  • Add -k option to the drogon_ctl when running the press command.

  • Refine request routing process.

  • Add CI tests with more compilers.

  • Avoid a race condition in database listener tests.

  • Remove macos-11 CI; not supported by Homebrew.

  • Bump github/codeql-action from 2 to 3.

  • Move the RealIpResolver plugin to the PreRouting join point.

Fixed

  • Fix: typo on Mapper method.

  • Fix a error of coroutines on Windows.

  • Fix ORM: The original way did not handle exceptions correctly.

  • Remove the default ctor of the Row class in ORM.

  • Set the url of trantor to the official repository.

  • Fix htonll/ntohll redefinition.

  • Fix building with MSYS2.

  • Fix name issue when cross-compiling.

1.9.1 - 2023-11-27

API changes list

  • Pass HttpRequestPtr to custom error handlers.

  • Provide some functions for incrementing the value of given columns.

  • Return HttpAppFramework by setExceptionHandler.

Changed

  • Custom sessions.

  • Use the constexpr if instead of std::enable_if.

  • Make id generator consistent.

  • Update test_cmake.csp.

  • Simplify drogon test with c++17.

  • Remove unused and undefined overloads of isBase64.

Fixed

  • Fix build due to trantor commit out of date and address warnings.

  • Fix a bug of the GlobalFilters plugin.

  • Fix: uuid formatting.

1.9.0 - 2023-10-29

API changes list

  • Added isTopicEmpty function;

Changed

  • Update the ubuntu Dockerfile;

  • Add optional Criteria && || operator support;

  • Bump actions/checkout from 3 to 4;

  • Make & and * directly adjacent to variable names;

  • Use wss://echo.websocket.events/.ws in WebSocket client example;

  • Change logs in the AccessLogger plugin to TRACE level;

Fixed

  • Fix an error in the secureRandomString function;

  • FIX int mapping to int64_t instead of uint64_t;

1.9.0-rc.1 - 2023-09-23

API changes list

  • Drop cpp14 build support.

  • Add isHead() method to HttpRequest, to preserve information about the original method for use in the controller.

  • Allow omitting template parameter in execCommandSync.

  • Add a method to HttpRequest to access the matched routing parameters.

Changed

  • Update readme files.

  • Allow sync advice to be callable on websocket requests.

  • Set concurrency to prevent blocking CI queue.

  • Validate clang-format version & Customize clang-format path.

  • Extract format action into distinct job.

  • Split macOS and Ubuntu CIs for readability.

  • Set concurrency for CodeQL.

  • Add dependabot.yml for GH actions.

  • Replace sprintf with snprintf.

  • Use ninja to build faster.

  • Avoid using well-known ports for demoMain.

  • Simplify coroutine implementation.

  • Add a plugin for prometheus.

  • Optimize plugins with redirection functions.

  • Optimize regex generator.

  • Add override keyword to setSockOptCallback.

  • SlashRemover optimization.

Fixed

  • Fix race condition when setting the secure flag during test.

1.8.6 - 2023-08-23

Changed

  • Show outputs of try_compile for UUID libs.

  • Update Trantor to fix a serious bug when sending files.

1.8.5 - 2023-08-19

API changes list

  • Add the forwardCoro method to HttpAppFramework.

  • Possibility to add plugins without config file.

  • Implement QueryBuilder.

  • Add getOriginalPath function.

  • Add setsockopt to HttpClient.

  • Add overload function of newHttpResponse.

  • Add getConnectionCount method.

Changed

  • Add synchronization interface to model's associated query.

  • Use syncAdvices.empty() to check.

  • Remove the deprecated Json::Reader.

  • Adapt Drogon to take advitange of Trantor TLS refactor.

  • Add avatars of all contributors to the readme file.

  • Remove docsforge from readme.

  • Adapt to gcc13.

  • Modify the HttpMessageBody class.

  • Add the GlobalFilters plugin.

  • Add filters and plugins to the drogon.h header file.

  • Add webp and svg to the default file_types.

  • Update SqlBinder.h.

  • Remove path from COMPILER_COMMAND.

  • Hodor plugin - Use IP bytes for user IP identification.

  • Add SlashRemover plugin.

  • Support setting max_files in loggers.

  • Use shared_ptr to store plugins.

  • Throw custom exception in HttpClient.

  • Base64 improvements.

  • Add CT_TEXT_JAVASCRIPT.

  • Fix typo in newHttpJsonResponse documentation.

  • Add CodeQL workflow.

  • constexpr base64 length calculators.

  • Make isBase64() and isInteger() take string_view.

  • Chore: add package.xml.

  • Add an example of yaml config file.

  • Remove some unused functions.

  • Use unsigned char to call the std::isspace function.

  • Change options BUILD_CTL and BUILD_EXAMPLES and update readme with Building options.

  • Remove unused CI files and Jekyll config.

  • Ensure that all filters, AOP advices, and handlers are executed within the IO threads.

  • Update test.sh and build.sh by appending prefix "X" to string variable comparisons.

  • Recognize URI in request lines.

  • Address warnings on macOS CI.

  • Perform insensitive string compare of cookie SameSite attribute.

Fixed

  • Temporary fix dead HttpClient.

  • Fix a configuration error when building drogon_ctl.

  • Fix generation of JSON field validation for short type.

  • Fix bug on Mac M1 with redis chat example code.

  • Fix error: conversion from long int to Json::Value is ambiguous.

  • Bugfix: PgBatchConnection did not report error message.

  • Fix typo in config file.

  • Fix a hanging bug when writing large string to text field.

  • Fixed logic error of limiterExpireTime_.

  • Fix Missing Header BaseBuilder.h in CMakeLists.

  • Fix: Coroutine handle should be captured by value.

  • Fix issues in the ListParaView and content types.

  • Fix target link libraries of yaml-cpp to comaptiable with vcpkg.

  • Fix build error on win32/mingw.

  • Fix CI in MacOS.

  • Fix broken link in CONTRIBUTING.md.

1.8.4 - 2023-03-19

API Changes list

  • Add a configuration option to display local time in logs.

  • Add the stackLimit option for jsoncpp.

  • Add coroutine to wait until event loop ends.

  • Add switchThreadCoro().

  • Add queueInLoopCoro function.

Changed

  • Reduce overhead of constructing string from request status.

  • Add coroutine parameter binding test and make tests not blocking.

  • Use weakptr instead of shared_ptr in HttpClient.

  • Refactor HttpServer codes.

  • Add an option in CMakeLists.txt to set how to use trantor.

  • Add support to yaml config file.

  • Changes to free http client if no request is pending.

  • Trigger error message in drogon test when faced with bad parameter.

Fixed

  • Make the token bucket full when it is initialized

  • Fix file r/w race condition in integration test.

  • Postgresql: don't handle events anymore after connection closing.

  • Fix multipart boundary with charset.

  • Fix a conan issue in github actions.

  • Hold shared pointer from the very beginning in WebSocketConnectionImpl.

1.8.3 - 2023-01-23

API changes list

  • Add onSessionStart() and onSessionDestroy() events

  • Support postgresql asynchronous notification (LISTEN/NOTIFY).

Changed

  • Update Utilities.cc

  • Drogon test refactor

  • Enable json entry as string

  • Mark awaiters as non-copyable

Fixed

  • Fix HttpController regex path matching

  • Fix a memory leak in the redis example

  • Partial fix for MSYS2 compat

1.8.2 - 2022-11-11

API changes list

  • Add the queueInLoopCoro function.

  • Avoid HashDoS attacks via random per-session hash initial state.

Changed

  • Support the mediumint column when generate the mysql model.

  • Set Hiredis_FOUND to true when finding Hiredis library.

  • Add rate limiter.

  • Add some test cases for the sqlite datetime type.

Fixed

  • Fix typo in drogon_test.h.

  • Fix a date race in drogon_test.

  • Fix a deadlock bug when closing all database connections.

1.8.1 - 2022-09-25

API changes list

  • Support redis subscription.

Changed

  • Remove redundant member functions of drogon::Task.

  • Small patches on orm_lib.

  • Add support for the string_view type to SqlBinder in orm.

Fixed

  • Fix a conflict of ssize_t type with hiredis.

  • Fix a test bug when clients start before servers.

  • Fix model template file Unreachable code.

  • Use the mysql_library_end() function to avoid memory leaks.

1.8.0 - 2022-09-01

API changes list

  • Add not like criteria.

  • Add HttpResponse::newStreamResponse().

  • Add the same site option for session cookie.

  • Add support for custom SQL query.

Changed

  • Update issue templates.

  • Enable automatic reconnect in mysql.

  • Add typename for clang-14.

  • A workaround for redis sync exec.

  • Resolve redis server hostname from config file.

  • Add username option to redis databases.

  • Return nullptr if a plugin is not loaded when getting it.

  • Support controller registration in plugin.

  • Check mysql-optionsv support in cmake.

  • Check if host header is set before setting.

  • Clear all database connections before quitting.

  • Add namespace to views when using drogon_ctl.

  • Support pipeline mode on PostgreSQL 14+.

  • Add content type to multipart file upload.

  • Make orm::Result compatible with C++ STL container concepts.

  • Throw exceptions instead of exiting when loading configuration fails.

  • Rename BUILD_TRANTOR_SHARED to BUILD_SHARED_LIBS.

  • Support compressed request.

  • Prevent sending multiple responses for a single request.

  • Remove the virtual specifier from functions marked with override.

  • Remove redundancies from the CMake action.

  • Ensure requiring a semi-colon after macros.

  • Omit redundant virtual specifiers.

  • Refactor orm::SqlBinder.

  • Implement toJson to convert std::vector to Json::Value.

  • Resolve real ip from HttpRequest.

  • Delete the unmaintained test script.

  • Change the listener port of the cookie test.

  • Use a raw string literal for the drogon banner.

  • Change timeout of pipeline test for the CI environment.

  • Accept "postgres" for DbClient type as well.

  • Log remote real address in AccessLogger.

  • Support coroutine filter.

  • Refactor db_test.cc.

  • Use nullopt instead of the no-argument constructor.

  • Set the running flag to false after calling the quit() method.

  • Fix doc link in README files.

Fixed

  • Fix XXXControllers created on MSVC even if specified not to do so.

  • To avoid accessing a null point, make sure result == OK before accessing the response ptr.

  • Fix a bug when stopping redis service.

  • Fix mutex lock missing.

  • Fix tolower with cfi sanitizer.

  • Add move constructor to fix clang-14 compile error.

  • Fix HttpClient dns cache.

  • Fix bug when resolving redis server hostname.

  • Reset timer afters relaunching on Linux.

  • Fix some configuration file issues.

  • Fix HttpFile unittest error on Windows.

  • Fix core dump causing by logging in destructor.

  • Fixing link error when linking with static c-ares.

  • Remove redundant resource release.

  • Install missing header file apply.h.

  • Fix deleteFutureByPrimaryKey compile fail.

  • Fix compilation failure without database support.

  • Fix Mapper::updateBy() async api.

  • Fix no BUILD_CTL with tests.

  • Fix some bugs in RedisClient.

  • Fix a misuse of std::move.

  • Fix a bug when creating models with composite keys in sqlite3.

  • Fix a bug when converting the content-length string to size_t.

  • Fix a bug when parsing multipart/form-data.

  • Export the getVersion method for Windows.

  • Add a pre-compilation macro in the pg pipeline test code.

1.7.5 - 2022-02-19

API changes list

  • Add toString for drogon::ReqResult.

  • Add max-age, samesite options to Cookie.

  • Enable setup output of logs to files at any time.

Changed

  • Use operator<< to convert ReqResult to string.

  • Remove sudo from build.sh.

  • Remove sudo from dependencies in Dockerfile.

  • Avoid attempt linking to std::fs when target does not exist.

  • Destroy fastdb client on quit.

  • Check HTTP client is not sending requests in sync mode on the same event loop.

  • Start listening after beginning advices.

  • Allow using json_cpp in other sublibraries.

  • Accept system lib for uuid on macOS.

  • Add Not In to ORM Criteria.

Fixed

  • Fix WS test potentially can get stuck.

  • Fix a bug in model generation.

  • Prevent malformed upload path causing arbitrary write.

  • Fix missing "using namespace drogon::orm;" at autogenerated restful controllers.

1.7.4 - 2021-12-11

API Change List

  • Support setting client certificate and SSL options on HTTP client

  • Add more method for mapper

  • Add overloads for SqlBinder::operator<< with non-const ref parameter

Changes

  • Use decay_t instead of remove_cvref_t

  • Prevent drogon_ctl create_view appending empty new lines to resulting

  • Add an example for using coroutines of redis clients

  • Export some symbols for Windows

  • Mark all awaiters as nodiscard

  • Handle SIGINT too

  • Support CoroMapper method chaining

  • Remove setting c++17 in FindFilesystem

Fixed

  • Fix Drogon not building caused by FindFilesystem

  • Fix deprecated warning when using openssl 3

  • Fix coroutine object destructing before coroutine ends in async_run

  • Fix build fail on CentOS8

  • Fix some compiler warnings

  • Fix the error with multiple results when calling a procedure in mysql

  • Fix an error when binding a function pointer to SqlBinder

  • Fix orm tests

  • Fix CI to actually build in C++14

  • Fix a race condition when resetting ws

  • Fix an error of std::bad_function_call

  • Update Trantor (fix sending partial files)

1.7.3 - 2021-10-17

API Change List

  • Support sending files by range

  • Allow outside access to the file path of an HTTP response

  • Support custom MIME types and extensions

  • Add the getOptionalParameter method

  • Add async_run

Changes

  • Experimental HaikuOS Support

  • Improve AccessLogger

  • Add Alpine Dockerfile

  • Add option to disable brotli if desired by the builder

Fixed

  • Fix a bug in the getIOLoop method

  • Return on redis connection errors

  • Fix(MultiPart): Does not respect quotes in Content-Disposition header

  • Fix(cmake): error in FindFilesystem

  • Fix(style): Change the NotFound page text color

  • Fix a race condition in testing

1.7.2 - 2021-08-24

API Change List

  • Add port() and host() to HttpClient

  • Add stop() method to the WebSocketClient class

Changes

  • Enables higher level of warnings when building on UNIX with GCC

  • Generic optimizations

  • Add redis example

  • Added support for paths containing unicode characters on Windows

  • Load ParseAndAddDrogonTests in DrogonConfig

  • Add BUILD_DOC to cmake options

  • Add websocket server example

  • CMake: Add CPack for .deb and .rpm package generation

  • cmake: Use GNUInstallDirs to figure out install dirs.

Fixed

  • Fix WS client example not working with integration_test

  • Fix WS client example error when encountering bad IP addresses

  • CacheFile supports >2GB files on 64-bit Windows

  • drogon_ctl now emits error on failing to create view from CSP

  • Added the make program to Ubuntu docker environment

  • Correctly check the case-insensitive value of the upgrade header of responses in websocket connections

  • Fix incorrect MD5 hash when using internal MD5 implementation when input size == block size+1

  • Fix test success message incorrectly shown for a failed test when -s is flag present

  • Force using boost::filesystem when building for Android

  • Escape connection string in drogon_ctl create model

  • Fix some memory leak and race conditions in WebSocketClient

1.7.1 - 2021-06-24

Changes

  • Updated Dockerfile to Ubuntu 20.04 & Fixed Timezone Hangup.

  • Add jsonstore example.

  • Fix some typos.

Fixed

  • Fix single layer directory traversal in StaticFileRouter.

1.7.0 - 2021-06-18

API changes list

  • Add the PreSendingAdvice to AOP.

  • Make Json::Value as a SQL parameters type.

  • Add the int type for the Row index parameter.

  • Add SSL_CONF_cmd support.

  • Add the setCustomStatusCode method.

Changes

  • Fix sync_wait/co_future use-after-free.

  • Add the AccessLogger plugin.

  • Make AsyncTask only destruct when the coroutine reaches end of executions.

  • Add Drogon test framework.

  • Improve WebSocket mask handling.

  • Add minimal server side examples.

  • Optimize HttpControllersRouter for cases where regex is not needed.

  • Create controller instances after running instead of after being called.

Fixed

  • Move resolverPtr when destroying an HttpClientImpl object.

  • Modify the way to create sqlite3 client.

  • Fix a bug when a network failure occurs on Redis connections.

  • Fix a bug of string_view for MSVC.

  • Fix 'build.sh -tshared'.

  • Fix compiler warnings.

  • Fix CacheMap crash in CI tests.

1.6.0 - 2021-05-15

API changes list

  • Add option to set default handler.

  • Add the setTimeout() method to the DbClient class and the RedisClient class.

  • Add the validateCert parameter to the newWebSocketClient method.

Changed

  • A few mini changes to drogon_ctl command.

  • Improve the MultiPartParser class.

  • Add GNU -Werror & fix warnings.

  • Enhancements on files part.

  • Add version/soversion to shared library.

  • Disallow coroutines to be resolved as plain subroutine handlers.

  • Send the content-length header even if the body(POST,PUT,OPTIONS,PATCH) is empty.

  • Use make_exception_ptr instead of throw/catch when possible.

  • Remove duplicated inclusion.

  • Print error before terminating in AsyncTask.

  • Allow users to override drogon Find modules.

  • Use two-phase construction for the DbClientImpl and the RedisClientImpl.

  • Add support 'select <db>' for redis.

Fixed

  • Fix a bug of the Transaction class.

  • Copy CoroMapper.h to installation location.

  • Remove the related request from the buffer if it's not sent after the timeout.

  • Fix ORM with SQLite3 not compiling on Arch Linux.

  • Fix an error when constructing RedisClientImpl objects.

  • Fix coroutine frame leak upon assigning to awaitable.

  • Set running flag to true before installing plugins.

  • Fix double free in coroutine exception handling.

1.5.1 - 2021-04-10

Fixed

  • Fix a bug of reflection failure.

1.5.0 - 2021-04-10

API changes list

  • Add option to disable signal handling.

  • Added newFileResponse Support for buffers in memory.

  • Add a method to HttpRequest to set the user_agent header.

  • Catch exceptions thrown by handlers.

Changed

  • Add convert method to models.

  • Add Arch Dockerfile.

  • Add Redis support.

  • Print error and exit when IP parsing failed in server startup.

  • Use a canonical way of calling max() function on Windows.

  • Remove an assertion statement in the HttpClientImpl class.

  • Send ping messages by default for WebSockets.

  • Use canonical cmake logic for cross-compilation.

  • set make job count to the number of threads in GitHub Actions workflow.

  • Use lambda instead of std::bind in HttpServer.

  • Add exports macro to allow Shared Library with hidden symbols by default.

  • Remove repeated class names on relationships from the model generator.

Fixed

  • Fix compile warnings in SQL client.

  • Fix compilation errors for the TimeFilter example.

  • Fix build.sh missing nproc error in build for macOS.

  • Fix a bug when creating sqlite3 models.

  • Fix two building corner cases, CMake quality of life improvements.

  • Add CoroMapper to models' friends.

1.4.1 - 2021-03-07

Fixed

  • Fix a bug of DbClientImpl class that can lead to a crash when database connections are breaking.

1.4.0 - 2021-03-05

API changes list

  • Add coroutine support.

  • Add default value interface to SqlBinder for MySQL and PostgreSQL.

  • Support SNI in the HttpClient class.

  • Validate certificate in HttpClient.

  • HttpRequest: add a feature to avoid URL encoding of the path.

Changed

  • Handle cross-compiling properly.

  • Lowercase all HTTP headers, add webp and avif types.

  • Modify FindMySQL.cmake

Fixed

  • Fix an error in the HttpClient class when a response has no content-length.

  • Return 404 or 405 responses correctly.

  • Fix compilation errors on vs2019.

  • Fix stack use after scope error in client_example.

  • Fix the error when the SSL handshake fails.

1.3.0 - 2021-01-16

API changes list

  • Add an option for setting float precision in Json string.

Fixed

  • Fix brotli link order.

  • Fix cmake with drogonctl cross-compilation.

  • sqlite3: Insert into stmtsMap_ as string_view.

  • Fix some bugs when creating models via drogon_ctl.

  • Fix an error in sqlite3 ORM generator.

  • Fix an error with missing composite key to sqlite3 ORM generator.

Changed

  • Remove the use of std::filesystem to adapt to old compilers.

  • Add github actions.

  • Serve wasm files with the correct MIME type.

1.2.0 - 2020-12-12

Fixed

  • Fix error when receiving response without content-length header.

  • Fix a stack-overflow error when high concurrency happening on sqlite3.

  • Fix MinGW ORM building by enabling htonll and ntohll.

Changed

  • Modify the WebSocketTest controller to create a simple chat room.

  • Add support for OpenBSD.

  • Return 400 if the content-length is invalid.

  • Don't send content type in a 304 response.

  • Add the reuse_port option to app() interface.

  • Add the 'std::optional' support in the SqlBinder class and the Session class.

  • Add implicit page resolving capability.

1.1.0 - 2020-10-31

Fixed

  • Fix failing to connect to DB if parameters contains spaces.

  • Fix a CMAKE bug when SHARED and EXAMPLES are on.

  • Fix the HttpServer::isWebSocket method.

  • Find MariaDB client library correctly on Ubuntu 20.04.

  • Fix a bug when creating sqlite3 database models.

  • Fix a bug in the Mapper::insertFuture method.

Changed

  • Disable TLS1.0/1.1 on HTTPS by default.

  • Use explicit lambda capture lists.

  • Modify the procedure of the app().run() method.

  • Support namespaces when creating view source files.

  • Add --path-to-namespace option to drogon_ctl for creating views.

  • Add the Host and Sec-WebSocket-Version headers when connecting to a websocket server.

1.0.0 - 2020-09-27

Fixed

  • Fix an issue of simple_reverse_proxy when handling chunked transfer-encoding.

  • Fix a bug when losting connection to MySQL server during query.

  • Remove the expired std::iterator template.

  • Fix a bug when creating models in some special cases.

API changes list

  • Modify methods related to headers.

  • Remove the expired std::iterator template.

  • Add getListeners() method to the HttpAppFramework class.

  • Remove the useless method stat() from the PluginBase class.

  • Add ConfigLoader::ConfigLoader(const Json::Value &data).

Changed

  • Add support for status code 418.

  • Modify session handling.

  • Modify the FileUpload.csp in simple_example to avoid CORS.

  • remove execution permission on /tmp/drogon.lock.

1.0.0-beta21 - 2020-08-19

Changed

  • Modify the Result class in ORM.

Fixed

  • Fix zlib link error on Windows for the latest vcpkg.

1.0.0-beta20 - 2020-08-15

API changes list

  • Provide users with a method to change the session ID of a session.

Changed

  • Modify parseContentType function.

  • Modify the docker file to build release version in docker.

  • Set session to requests for websockets.

  • Modify parseContentType function.

  • Change the return value type of the mktime() function in models.

  • Fix compilation warning of sprintf function.

Fixed

  • Fix a bug when saving uploaded files on Windows.

  • Fix a MySQL issue when connections are lost.

  • Resolve an issue when sending big files (>=2GB) on Windows.

  • Fix boost::string_view compilation error of MysqlConnection class.

  • Set the response Access-Control-Allow-Headers header correctly for CORS.

  • Fix a bug in drogon_ctl when creating a model, that causes to write source files multiple times.

1.0.0-beta19 - 2020-07-16

API changes list

  • Add a method to disable unicode escaping in json string.

  • Add a timeout parameter when sending HTTP requests.

  • Add the getJsonError method.

Changed

  • Remove the restriction on the location of layout tags in views.

  • Add a way to set the character set when creating DbClient objects.

  • Make GET as the only method for accessing static files.

  • Modify the 404 pages generator.

  • Modify the DbClient class.

  • Optimize the HttpResponse class.

Fixed

  • Properly handle chunked encoding requests.

  • Destroy DNS resolver of HttpClient in the correct thread.

  • Add the header <cctype> to resolve build errors in VS2017.

1.0.0-beta18 - 2020-06-14

API changes list

  • Add a new joinpoint of AOP for modification on each HTTP response.

  • Add a method for the TERM signal handling.

  • Add getContextRef method to the WebSocketConnection class.

Changed

  • Create a class template for publish subscribe pattern.

  • Add contribution recommendations.

  • Send a close message when closing a web socket connection.

  • Add additional formats for getHttpDate function.

  • Make app().run() method callable on a non-main thread.

  • Add digest filter in examples.

  • Use string_view to parse multipart/form-data requests.

Fixed

  • Fix building of ORM on FreeBSD.

  • Fix a Mysql connection error on Windows.

  • Fix a bug in ListenerManager::getIOLoop().

  • Fix the count() method of Mysql ORM.

  • Fix a compilation issue on windows.

  • Fix model generation for PostgreSQL primary keys.

  • Fix a bug with quoted column names in sqlite3 databases.

1.0.0-beta17 - 2020-05-22

API changes list

  • Add methods to get DbClient connection status

Changed

  • Add causal profiling with coz

  • Add filters on static file locations

  • Pass data from view to its layout container

  • Add additional HttpStatusCodes and implement a custom error handler

  • Modify drogon_ctl to show more compilation information

Fixed

  • Fix a bug in drogon_ctl (when size of a line is larger than buffer size)

  • Fix a connection bug of MariaDB clients

1.0.0-beta16 - 2020-04-27

API changes list

  • Standardize Row and Result api in ORM

Changed

  • Add support for brotli compression

  • Parse content-type of HTTP requests

  • Remove non standard macros

  • Support url safe base64 codec

1.0.0-beta15 - 2020-03-28

API changes list

  • Modify the Attributes interface of the HttpRequest class

  • Add the getHomePage() method to HttpAppFramework

Changed

  • Support br compression files

  • Update Content-Type support for PDF

  • Add support for MSVC 2015

  • Optimize the rendering of HTTP responses

  • Update the Dynamic Views Loading, add the layout tag

  • Graceful shutdown

Fixed

  • Fix error when finding the jsoncpp library

  • Fix the 'many to many' relationship in ORM

  • Fix a bug when creating json responses

  • Fix a bug on filters with WebSocketControllers

  • Fix a fatal bug in the MysqlConnection class

  • Fix crash with partial matched url

  • Fix null jsonObject from newHttpJsonRequest

1.0.0-beta14 - 2020-02-17

API changes list

  • None

Added

  • Add IOLoop access function

Changed

  • Add support for regular expressions when routing

  • Add location configuration for static resources

  • Port drogon to Windows

  • Support 'password' keyword in configuration files

  • Remove get_version.sh

  • Modify dynamic view loading algorithm, add 'layout' tag for view generation.

Fixed

  • Fix an issue of out-of-range (#334)

  • Fix a bug in views generation (#341)

1.0.0-beta13 - 2020-01-04

API changes list

  • None

Changed

  • Add some unit tests (based on gtest)

  • Add a reverse proxy example

  • Make a patch to support the ossp UUID library

  • Make shared linking possible

  • Add the drogon::OStringStream class

  • Optimize ORM

  • Modify singleton logic of DrClassMap

Fixed

  • Fix an error in the batch mode of libpq

  • Fix an error when clients use HTTP1.0

1.0.0-beta12 - 2019-11-30

Changed

  • Make dg_ctl a symlink

  • Modify some code styles

  • Explicitly set path to '/' for JSESSIONID cookie

  • Handle gzip errors safely

  • Add the SecureSSLRedirector plugin

Fixed

  • Fix a bug in dg_ctl for creating models of sqlite3

  • Reset the flag used to parse json to false before recycling HttpRequest objects

1.0.0-beta11 - 2019-11-06

Changed

  • Delete useless log output

1.0.0-beta10 - 2019-11-04

API changes list

  • None

Changed

  • Add the headers configuration option for static files

Fixed

  • Fix(compilation on alpine): Replace u_short alias.

1.0.0-beta9 - 2019-10-28

API changes list

  • Add interfaces for accessing content of attachments.

  • Add option to disable setting the 404 status code of the custom 404 page.

  • Make user can use any string as a placeholder's name in routing patterns.

  • Add type conversion methods to the HttpRequest and HttpResponse classes.

Changed

  • Modify cmake configuration.

  • Modify the quit() method.

  • Implement relationships in ORM.

Fixed

  • Fix size_t underflow of drogon_ctl.

  • Fix some race conditions.

  • Fix a busy loop bug when connections to MySQL server are timeout.

1.0.0-beta8 - 2019-10-03

API changes list

  • Add length() method to the Field class.

  • Add as<bool>() function template specialization to the Field class.

  • Add add attribute store methods to the HttpRequest class.

  • Add the setCustomContentTypeString() method to the HttpRequest class.

  • Add thread storage.

Changed

  • Use .find('x') instead of .find("x") in a string search.

  • Add the ability to create restful API controllers.

Fixed

  • Fix a bug of creating models for MySQL.

  • Fix a bug when HTTP method is PUT.

  • Fix a bug when using 'is null' substatement in ORM.

  • Fix a sqlite3 bug when some SQL errors occur.

  • Fix bug with parsing json.

  • Fix url decode.

  • Fix a error in HttpClient.

  • Fix a error in setThreadNum method.

  • Fix some race conditions.

1.0.0-beta7 - 2019-08-31

API changes list

  • Remove the default value parameter of some methods (#220)

Changed

  • Optimize DNS in HttpClient and WebSocketClient (support c-ares library).

  • Reduce dependencies between declarations.

  • Add database tests in the travis CI and add test cases to database tests.

  • Reduce size of docker image.

  • Make the framework API support chained calls.

  • Add a synchronous join point for AOP.

  • Modify the CMakeLists to modern cmake style.

Fixed

  • Fix bugs in default return values of functions(#220),

  • Fix a bug in the cmake configuration file when there's '+' in the building path.

  • Fix a bug in drogon_ctl (when creating orm models)

1.0.0-beta6 - 2019-08-08

API changes list

  • None

Changed

  • Modify the 'create view' sub-command of drogon_ctl

  • Optimize the transmission of pipelining responses.

  • Add the DrogonConfig.cmake file so that users can use drogon with the find_package(Drogon) command.

1.0.0-beta5 - 2019-08-01

API changes list

  • None

Added

  • Add two methods to control if the Server header or the Date header is sent to clients with HTTP responses.
    • void HttpAppFramework::enableServerHeader(bool);
    • void HttpAppFramework::enableDateHeader(bool);

Changed

  • Support high performance batch mode of libpq.

Fixed

  • None

1.0.0-beta4 - 2019-07-30

API changes list

  • HttpRequest::query() returns a const reference of std::string instead of a string_view
  • WebSocketConnection::setContext(), WebSocketConnection::getContext(), etc.
  • Remove the config.h from public API.

Added

  • None

Changed

  • Modify the CMakeLists.txt
  • Modify the get_version.sh

Fixed

  • None

1.0.0-beta3 - 2019-07-28

API changes list

  • None

Added

  • Add a README file for examples.
  • Add some managers to reduce the size of the HttpAppFrameworkImpl code.
  • Add missing wasm ContentType.

Changed

  • Update the submodule - trantor.
  • Optimize processing of HTTP pipelining.

Fixed

  • Fix an error in the HttpClient class when sending a request using the HEAD method.

1.0.0-beta2 - 2019-07-10

API changes list

  • Add setBody methods to the HttpRequest class.
  • Add the setContentTypeCodeAndCustomString method to the HttpResponse class.

Added

  • Add stress testing command to drogon_ctl.
  • Add -v, -h parameters to drogon_ctl.

Changed

  • Update the submodule - trantor.
  • Modify the handling of CORS.
  • Optimize the htmlTranslate method and the Field class.
  • Make all listeners share IO threads in the MacOS/Unix system.

Fixed

  • Fix a bug of the IsPlugin class.
  • Use default constructor of string_view to reset _statusMessage to fix a warning on GCC 9.1 on Arch Linux.

1.0.0-beta1 - 2019-06-11