Nitromelon
Nitromelon
Resolved by RealIpResolver #1321
I think we don't need to pursue extreme performance in these cases. An atomic shared pointer is enough. @an-tao https://github.com/drogonframework/drogon/blob/4cbac301fbebb369dba8935f4f727a1ba5b9c513/lib/src/HttpAppFrameworkImpl.cc#L975-L1000
You could use `setCustomErrorHandler()` before we handle this problem. The custom handler will be invoked every time, no internal caching. PS: To make it into use, do not call `setCustom404Page()`.
You can use an timer to check the md5 change or edit time of the file.
This PR #1972 adds supports for pg connection options, but is currently hanging because I cannot make a good abstraction for three db types.
## Example codes ```cpp class MyMiddleware : public HttpMiddleware { public: MyMiddleware(){}; // do not omit constructor void invoke(const HttpRequestPtr &req, MiddlewareNextCallback &&nextCb, MiddlewareCallback &&mcb) override { if (req->path() ==...
relaunchOnError starts a child process using fork. The parent process monitors the child process, and starts a new one when it dies. The child process runs the framework logics. The...
'relaunchOnError ' is not a method that can rescue your program from failing. It acts just like systemd, which will restart the program again when it dies. Everything will become...
@Mis1eader-dev I misunderstood your situation. I thought you `runTaskInQueue` stop working after relauching, but actually it never works. I never use the `ConcurrentQueue`. It uses a mutex and a conditional...
I recommand to use async or coroutine apis, so you don't need an task queue. If you are using something that only has sync api, you might need a task...