drogon
C++14/17-based HTTP application framework
Toggle main menu visibility
Loading...
Searching...
No Matches
Changelog
All notable changes to this project will be documented in this file.
Unreleased
1.9.13
- 2026-05-06
API changes list
Add
HttpRequest::clearHeaders()
method.
Add
setQueryParameter()
and
setBodyParameter()
methods.
Add ability to use
BEGIN IMMEDIATE
and
BEGIN EXCLUSIVE
.
Add
UploadFile
constructor to create from memory data.
Add JOIN support to Mapper/BaseBuilder with FK auto-detection in code generator.
Add WebDAV HTTP methods (PROPFIND, MKCOL, COPY, MOVE).
Add per-request compression control to
HttpResponse
.
Added
Support for custom OPTIONS handling via middleware flagging.
Alias library for Drogon with name matching installed target.
--clear-output
option to drogon_ctl create models.
Changed
vector: reserve before inserting for efficiency.
make
utils::isBase64
support padding.
Extract duplicate
parseLine()
function to shared utility header.
Doxygen documentation adjustments.
Enhancement for custom OPTIONS handling.
Forward the path methods.
Fixed
Fix sqlite3 test in CI.
Fix HttpClient not sending WebDAV requests.
Fix connection limit bug.
Fix bugs exposed by CI.
Fix HTTP date formatting to be locale-independent.
Fix parsing invalid numbers in HTTP headers.
Fix shared lib view failure handling.
Fix drogon_ctl compilation with clang-cl.
Fix missing throw statement.
Add Homebrew Apple Silicon path detection in CMake finder modules.
Include missing header files.
Fix wrong numeric limit for floating types.
Fix regex WebSocket routes middleware initialization.
Fix system() replaced with execvp() in SharedLibManager.
Fix inverted test logic.
1.9.12
- 2026-01-26
API changes list
Implement when_all coroutine gate.
Changed
Models: add toString method.
changing std::strlen to a string comparison consistent with multibyte chars on model generation templates.
Enhance error handling in CacheFile methods.
Mysql exception forward errorNo to SqlError.
Support unsigned integer types in MySQL ORM.
Fixed
Fix errors after database connection interruption.
Use redisFreeCommand instead of free() function.
Fix the missing openssl dependency in FindMysql.
Fix warnings - for range loop no copies, unsigned int always >= 0.
Fix cross compiling.
Fix linker errors on mingw64.
Fix SQL syntax error when UPDATE has no fields to update.
Fix unused variable warnings.
1.9.11
- 2025-06-20
API changes list
Add a new overload for execSqlCoro.
Changed
Do not write to source directory during build.
Improve Postgres connection stability.
Add handleFatalError in handleClosed.
Add -o|–output option to drogon_ctl create models.
Add qrcode for WeChat official account to the README file.
Support for iOS compiling.
Add cors example to demonstrate cross-origin support in drogon.
Add support for continuation frame in WebSocketMessageParser.
Add RawParameter API to pass raw SQL parameters.
Upgrade Windows image and re-enable tests on Windows.
Fixed
Fix a bug in isAutoCreationClass<T>.
Fix CI on MacOS.
Fix issue with precision loss of double-type parameters in ORM inputs.
1.9.10
- 2025-02-20
API changes list
Add setConnectionCallback.
Changed
ORM:Avoid unnecessary copies when returning search results.
Improve the zh-TW README translation.
Make quit function thread safe.
Added path_exempt in AccessLogger plugin config to exclude desired paths.
Fixed
Fix the issue in view generation by including the missing header file.
Fix ci: codespell.
1.9.9
- 2025-01-01
API changes list
Added Partitioned flag for cookies.
Changed
Update FindFilesystem.cmake to check for GNU instead of GCC for CMAKE_CXX_COMPILER_ID.
Update README.
Chore(workflow/cmake.yml): upgrade macos runner.
Add emptiness check to the LogStream &operator<< with std::string_view.
Fixed
Fix a bug in plugin Redirector.
Fix CMAKE issues mentioned in #2144 and a linking problem which manifest with gcc12.3 when building with shared libs.
Fix: Remove dependency on locales being installed on the system.
1.9.8
- 2024-10-27
API changes list
Add in-place base64 encode and decode.
Add check the client connection status.
Changed
Add Hodor whitelists.
Include exception header for std::exception_ptr.
Add support for escaped identifiers in Postgresql.
Remove content-length header from 101 Switching Protocols response.
Remove websocketResponseTest from windows shared library env.
Optimize query params and allow for empty values.
Replace rejection sampling and remove use of rand().
Add sending customized http requests to drogon_ctl.
Fixed
Fix coroutine continuation handle.
Fix some bugs in plugin PromExporter.
Fix a bug after removing content-length header in some responses.
1.9.7
- 2024-09-10
API changes list
Add coroutine mutex.
Add requestsBufferSize function.
Refine SQLite3 error types with new exception handling.
Add a new method to reload SSL files on the fly.
Changed
Allow MultiPartParser to be movable.
Add quotes to the table name in the ORM generator.
Change stoi to stoul in the Field class.
Modernize cookies.
Change a log level.
Fixed
Use correct libraries when compiling statically.
1.9.6
- 2024-07-20
API changes list
Add setsockopt to HttpServer.
Support request stream.
Changed
Allow MultiPartParser to parse PATCH requests.
Add an example of prometheus.
Delay parsing json for HttpClient.
Update README.md.
Fixed
Fix some compilation warnings.
Fix typo in yaml config.
1.9.5
- 2024-06-08
API changes list
Fix an error in the yaml format config file.
Support postgresql connection options.
Add regex support for websocket controller.
Add the registerMiddleware method.
Changed
Add the conan badge to readme files.
Install gcc in ci.
Intention to present an alternative to improve the performance of a method in models.
Fixed
Fix an error in the yaml format config file.
Fix CI on Windows.
Fix some spelling errors.
1.9.4
- 2024-05-04
API changes list
Add client cert support for websocket.
Add JSON send overloads for WebSocket connections.
Changed
Minor enhancement: move some smart pointers around instead of copying them.
Remove the request shared_ptr from the multipart parser.
Fix typo in HttpAppFrameworkImpl.cc.
Avoid string copy and lowercasing on every request.
Implemented database reconnection loop.
Fixed
Bypass clang thread_local error.
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 advice, 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 advice.
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
Generated by
1.17.0