Commit Graph

893 Commits

Author SHA1 Message Date
Martin Chang
9524a91479
Support compressed request (#1291) 2022-07-02 22:07:48 +08:00
LE GARREC Vincent
b8f44aec2e
Rename BUILD_TRANTOR_SHARED to BUILD_SHARED_LIBS (#1299) 2022-06-29 17:29:20 +08:00
LE GARREC Vincent
e2b5a07921
Fix no BUILD_CTL with tests (#1300) 2022-06-29 17:26:37 +08:00
An Tao
46c00a317f
Throw exceptions instead of exiting when loading configuration fails (#1293) 2022-06-22 23:17:40 +08:00
timomrs
a42f759248
Add content type to multipart file upload (resolves issue #1252) (#1279) 2022-06-09 20:00:56 +08:00
timomrs
3b5de8863a
Resolve issue #1275 (#1276) 2022-06-07 16:12:22 +08:00
An Tao
ebf87d69d7
Support pipeline mode on PostgreSQL 14+ (#1169)
Co-authored-by: He, Wanchen <hwc14@qq.com>
2022-06-05 21:10:42 +08:00
An Tao
7af9853589
Clear all database connections before quitting (#1273) 2022-06-03 13:31:56 +08:00
varunsh
a4afc394dc
Check if host header is set before setting (#1269) 2022-05-31 11:20:05 +08:00
Nitromelon
bd4f3814a6
Support controller registration in plugin. (#1259) 2022-05-26 22:30:34 +08:00
Particle_G
41d9d7ec58
Add support for custom SQL query (#1241) 2022-05-21 15:23:34 +08:00
Nitromelon
3b11b80b10 Fix core dump causing by logging in destructor. (#1250)
Co-authored-by: Martin Chang <marty1885@users.noreply.github.com>
Co-authored-by: an-tao <antao2002@gmail.com>
2022-05-18 13:25:26 +08:00
An Tao
cd55a198d2
Return nullptr if a plugin is not loaded when gettting it (#1251) 2022-05-17 14:22:29 +08:00
Robert Huang
3b0fd3d676
Fix HttpFile unittest error on Windows (#1191) 2022-05-17 13:20:05 +08:00
JuergenGleiss
19d9ffcfc2
Bugfix/cookie same site test without any useful checks (#1247)
Co-authored-by: an-tao <antao2002@gmail.com>
2022-05-16 11:18:10 +08:00
JuergenGleiss
c5a1888da3
Feature/option same site for session cookie (#1221) 2022-05-08 13:47:18 +08:00
Greisberger Christophe
f017b09947
Added HttpResponse::newStreamResponse() (#1156) 2022-05-02 21:04:41 +08:00
Omar Mohamed Khallaf
e8b21502e2
Add username option to redis databases (#1223)
The Redis AUTH command was extended in Redis 6, so now it is possible to
use it in the two-arguments form:
AUTH <username> <password>
and omitting the <username> defaults to user 'default'.
2022-04-30 00:48:18 +08:00
An Tao
a4ba8aff95
Reset timer afters relauching in Linux (#1232) 2022-04-30 00:45:19 +08:00
Omar Mohamed Khallaf
5892fa2f9f
fix bug when resolving redis server hostname (#1229)
Calling `drogon::app().createRedisClient` from the resolver callback
function results in a failure because of `assert(!running_);` in
`HttpAppFrameworkImpl::createRedisClient`.

This fix uses a promise whose value is set in the callback and the
client creation is done outside the callback.
2022-04-27 16:46:27 +08:00
Omar Mohamed Khallaf
c9c2675ba9
Resolve redis server hostname from config file (#1228) 2022-04-27 13:39:10 +08:00
Nitromelon
e53c81b229
Fix HttpClient dns cache. (#1211) 2022-04-22 13:42:39 +08:00
DualWu
567e7c07ad
Add move constructor to fix clang-14 compile error (#1222)
https://github.com/drogonframework/drogon/issues/1206
2022-04-22 11:10:50 +08:00
LE GARREC Vincent
8c4896dfec
Fix tolower with cfi sanitizer (#1209) (#1210)
and update trantor with same patch.
2022-04-22 11:08:40 +08:00
Martin Chang
b9bbe45642
Fix XXXControllers created on MSVC even if specsfied not to do so (#1183)
Co-authored-by: marty1885 <marty1885@gmail.com>
2022-02-26 00:19:48 +08:00
Kirill
3c785326c6
Prevent malformed upload path causing arbitrary write (#1174) 2022-02-11 23:54:42 +08:00
Robert Huang
8ed0434ad8
Remove unused variable and fix compile error (#1171) 2022-02-03 22:33:50 +08:00
juanetch
bbc31612fc
add max-age, samesite options to Cookie (#1159)
Co-authored-by: an-tao <antao2002@gmail.com>
2022-01-16 11:40:17 +08:00
Nitromelon
68b2a46a29
Start listening after beginning advices (#1147) 2022-01-07 21:45:09 +08:00
MWX
e81662f29b
Update HttpRequestImpl.cc (#1148) 2022-01-06 00:33:29 +08:00
Martin Chang
e2842c9de5
Check HTTP client is not sending requests in sync mode on the same event loop in debug mode (#1143) 2022-01-02 20:14:27 +08:00
Vladimir
9db332af65
Enable setup output of logs to files at any time. (#1140)
Co-authored-by: Volodymyr Romanishyn <volodymyr.romanishyn@ingenico.com>
2021-12-29 13:20:39 +08:00
Ichiro
6c8f8bac1f
Add toString for drogon::ReqResult (#1133)
* Add to_string and to_string_view for drogon::ReqResult
2021-12-24 20:45:36 +08:00
Martin Chang
080123ff96
use operator<< to convert ReqResult to string (#1126) 2021-12-13 12:37:31 +08:00
Martin Chang
6b677a3ff6
Fix WS test potentially can get stuck (#1124) 2021-12-12 11:18:59 +08:00
An Tao
66e29dd9b2
Fix an error of std::bad_function_call (#1115) 2021-12-09 19:25:39 +08:00
NitroMelon
2a484536d1
Fix signal handle (#1106) 2021-12-05 18:43:49 +08:00
SCOTT-HAMILTON
1c44cf7e4c
Handle SIGINT too (#1094)
Co-authored-by: an-tao <antao2002@gmail.com>
2021-12-02 10:42:21 +08:00
An Tao
3ad9326e2a
Fix a race condition when resetting ws (#1101) 2021-12-02 00:35:27 +08:00
Martin Chang
113d23494a
Fix CI to actually build in C++14 (#1100) 2021-12-01 21:55:38 +08:00
Martin Chang
8913abc400
Mark all awaiters as nodiscard (#1098) 2021-12-01 08:40:09 +08:00
An Tao
f522d2d70e
Create path if it doesn't exist (#1095) 2021-11-29 18:15:18 +08:00
Martin Chang
6e6493299e
Support setting client certificate and SSL options on HTTP client (#1090) 2021-11-27 19:11:05 +08:00
An Tao
895552dcae
Export some symbols for Windows (#1088) 2021-11-24 23:59:00 +08:00
L0ric0
953000e3fb
Fix compiler warnings (#1081)
* Fix narrowing conversion warning.

The `static_cast` does not change the behavior of the programm only explictly stating that the behavior is intended.
This change is needed as some compiler settings will treat this warning as an error.

* Do not redeclare `result` variable in insertFormattedString as it shadows variable in outer scope.

This fixes a compiler warning for shadowing variables declared in an outer scope. This change does not change the behaviour of the programm as the shadowd variable is not reused after the inner scope ends. Also the new version should represent the intention of the code better.
This change is needed as some compiler settings will treat this warning as an error.
2021-11-21 09:14:57 +08:00
Martin Chang
9e9bc7997e
use decay_t instead of remove_cvref_t (#1072) 2021-11-02 22:34:50 +08:00
Martin Chang
9448c19865
Fix coroutine objcet destructing before coroutine ends in async_run (#1069) 2021-11-02 13:56:18 +08:00
NitroMelon
0431f38a4e
Support range for static file (#1060) 2021-10-28 21:53:58 +08:00
Martin Chang
7066b09edb
fix deprcated warning when using openssl 3 (#1064) 2021-10-27 21:19:06 +08:00
Martin Chang
ac4a816a99
Add async_run (#1047) 2021-10-03 16:31:52 +08:00
An Tao
4a6f298661
Update trantor (#1046) 2021-10-03 16:31:26 +08:00
An Tao
3eb5bcd1dd
Add the getOptionalParameter method (#1037) 2021-09-30 08:50:00 +08:00
An Tao
22f810a71b
Fix a race condition in testing (#1041) 2021-09-30 08:49:35 +08:00
iandrc
fdcf294ef9
fix(style): Change the NotFound page text color (#1038)
Key changes:
- Set the text color for 404 page to `"black"`

Refs:
- https://github.com/drogonframework/drogon/issues/977
2021-09-29 20:56:09 +08:00
Bertrand Darbon
c5effe9c51
fix(MutliPart): Does not respect quotes in Content-Disposition header (#1031)
* fix(MutliPart): Does not respect quotes in Content-Disposition header

Currently, Drogon MultiPart parser expects quotes for name and filename in the Content-Disposition header.

The builtin HTTP library for .NET Core (System.Net.Http.HttpClient) leaves the quotes in this header, which means that by default, .NET Core applications cannot upload files to drogon.

The related RFC https://datatracker.ietf.org/doc/html/rfc6266 allows for both usages.

This contribution aims to fix this and handle both cases (with or without quotes)
2021-09-26 08:51:13 +08:00
Martin Chang
56cb305ae3
Support custom MIME types and extensions (#1024)
* Drogon now support custom extension and MIME types
* Added contentTypeString() to retrieve the string version of content type (in case the content type is not in the ContentType enum)
* setCustomContentTypeAndString() also accepts MIME as input (instead of the full content-type header string),
* Remove webContentTypeToString()
* Added app().registerCustomExtensionMime()
* Added support to load custom extension from JSON config
2021-09-24 22:51:09 +08:00
Martin Chang
c7b6c8403f
allow outside access to the file path of a HTTP response (#1020) 2021-09-17 13:14:23 +08:00
An Tao
94c7add7a1
Fix a bug in the getIOLoop method (#1014) 2021-09-07 21:42:08 +08:00
NitroMelon
ba5187868d
Improve AccessLogger. (#1008) 2021-09-02 08:20:49 +08:00
Martin Chang
6b0e38fc8f
Experimental HaikuOS Support (#1002) 2021-08-28 11:47:24 +08:00
NitroMelon
b2bf247048
Support sending files by range (#1001) 2021-08-26 23:33:58 +08:00
An Tao
d60f962aa3
Add stop() method to the WebSocketClient class (#972)
* Fix memory leak in the WebSocketClient class

Co-authored-by: marty1885 <marty188586@gmail.com>
2021-08-15 18:17:05 +08:00
Martin Chang
477c3dca7d
Fix test success message incorrectly shown when -s is flag present (#962) 2021-08-07 23:07:48 +08:00
Martin Chang
88236f9279
Add port() and host() to HttpClient (#959) 2021-08-05 23:10:05 +08:00
Martin Chang
0b9d114746
Fix Failing to Build on MSYS2 (#952) 2021-07-27 10:53:04 +08:00
An Tao
da87c124ae
Use HAS_STD_FILESYSTEM_PATH in filesystem.h (#950) 2021-07-25 23:17:32 +08:00
putao520
64f9f8b87f
Fix a md5 sum bug without openssl (#951) 2021-07-25 23:16:13 +08:00
Martin Chang
25cba9a2a5
Add missing include (#942) 2021-07-21 00:18:31 +08:00
An Tao
991873cf60
Correctly check the case-insensitive value of the upgrade header of responses in websocket connections (#935) 2021-07-16 17:03:00 +08:00
Greisberger Christophe
5c1c81e828
Feature/support windows unicode paths (#928) 2021-07-15 23:57:12 +08:00
Greisberger Christophe
d888816997
Added support for paths containing unicode characters on Windows (#921)
Co-authored-by: Christophe Greisberger <christophe@greisberger.fr>
Co-authored-by: an-tao <antao2002@gmail.com>
Co-authored-by: marty1885 <marty188586@gmail.com>
2021-07-12 22:38:02 +08:00
PColis
c5398b26cb
Update CacheFile.cc (#916)
On Windows, ftell returns a 32 bits signed integer.
On Windows we had to use _ftelli64 to return a signed 64 bits integer.
2021-07-02 19:08:28 +08:00
Martin Chang
0efd0c34c1
Generic optimizations (#913) 2021-06-30 23:37:59 +08:00
James Armes
5245f136b7
Add GCC-compatible warnings to the example executables (#910) 2021-06-27 09:54:02 +08:00
Martin Chang
04c7c7eb22
Fix WS client example not working with integration_test_server and print error when WS encounters bad IP address (#902) 2021-06-24 23:29:50 +08:00
Martin Chang
b8d820fc2a
Fix single layer directory traversal in StaticFileRouter (#901)
The StaticFileRouter can access file in the immediate parent directory if the
client sends a specially crafted, non RFC conforming HTTP 1.x request. By
sending a HTTP request without a "/" predicating the path. The StaticFileRouter
fails to detect directory traversal since it checks for "/../" in the path.

This PR fixes the issue by detecting if there's potential for directory
traversal. If true, we follow the path and detect if it reaches out of the
document root at any point. Also added 2 new tests for edge cases in static
file serving. (Not related to the bug).

Co-authored-by: an-tao <antao2002@gmail.com>
Bug discovered by: oToToT <https://github.com/oToToT>
2021-06-24 13:04:19 +08:00
Martin Chang
834e3eabdd
Fix CacheMap crash in CI tests (#890)
It is possible for the CacheMap to destruct while timeout callback is
active. This causes a very rare data race. And it's my hypothesis that
this is the reason behind CacheMap crashes on CI. This patch locks the
weels upon cestructing.
2021-06-13 10:33:30 +08:00
Philip Kovacs
a70a2844b1
Fix compiler warnings (#886)
Co-authored-by: an-tao <antao2002@gmail.com>
Co-authored-by: Martin Chang <marty1885@users.noreply.github.com>
2021-06-09 19:14:15 +08:00
An Tao
e7ec973095
Create controller instances after running instead of after being called (#888) 2021-06-09 10:58:56 +08:00
An Tao
945b26dc0c
Fix routing mismatch (#885) 2021-06-07 21:35:22 +08:00
Martin Chang
4abbf76214
Optimize HttpControllersRouter for cases where regex is not needed (#883) 2021-06-07 11:57:45 +08:00
An Tao
6a3f72f2e5
Fix 'build.sh -tshared' (#882) 2021-06-04 18:45:21 +08:00
an-tao
b654e35e51 Add the setCustomStatusCode method 2021-06-01 19:30:21 +08:00
Tommy Chiang
e1cbd1b987
Add SSL_CONF_cmd support (#871) 2021-05-29 16:53:46 +08:00
Martin Chang
ffc410a66e
Improve WebSocket mask handling (#875) 2021-05-29 15:11:41 +08:00
An Tao
1bddbb117a
Dos2unix (#874) 2021-05-28 09:52:34 +08:00
Martin Chang
0b5075bfa9
Drogon test framework (#869) 2021-05-27 20:09:57 +08:00
An Tao
1e87c35b8f
Fix a bug of string_view for MSVC (#870) 2021-05-25 16:51:49 +08:00
An Tao
8052c38f49
Make Json::Value as a SQL parameters type (#861) 2021-05-22 13:08:17 +08:00
An Tao
3601992546
Move resolverPtr when distorying an HttpClietImpl object (#860) 2021-05-20 13:15:59 +08:00
Martin Chang
32970172f6
Make AsyncTask only destruct when the coroutine reaches end of execution (#857) 2021-05-18 19:20:15 +08:00
An Tao
9a059aedef
Add the AccessLogger plugin (#854) 2021-05-17 21:45:18 +08:00
Martin Chang
706fc70abc
Fix sync_wait/co_future use-after-free (#855)
* Fix sync_wait and co_future heap use-after-free
* Fix sync_wait deadlock if on a single thread
* Fix WebSocketCoroTest crash
2021-05-17 19:41:16 +08:00
An Tao
cd093fc97e
Add the PreSendingAdvice to AOP (#853) 2021-05-16 19:38:16 +08:00
Martin Chang
f736e12a05
Fix double free in coroutine exception handling (#851) 2021-05-15 14:10:14 +08:00
An Tao
74b3ca3db6
Set running flag to true before installing plugins (#849) 2021-05-12 23:50:29 +08:00
陈晓林
e478b63dda
Add support 'select <db>' for redis (#847)
Co-authored-by: an-tao <antao2002@gmail.com>
2021-05-12 18:32:49 +08:00
Martin Chang
0e70be0a95
Fix coroutine frame leak upon assigning to awaitable (#848) 2021-05-12 16:05:20 +08:00
Philip Kovacs
2c53cf086a
Add missing mutex include (#845) 2021-05-11 09:24:14 +08:00
Martin Chang
6bfbf97eea
Print error before terminating in AsyncTask (#841) 2021-05-06 17:50:11 +08:00
Tommy Chiang
cb1876f26b
Remove duplicated inclusion (#838)
This remove the duplicated `#include "HttpClientImpl.h"` in `lib/src/HttpAppFrameworkImpl.cc`.
2021-05-04 22:36:59 +08:00
An Tao
74d57ab7fa
Add the validateCert parameter to the newWebSocketClient method (#835) 2021-05-02 20:15:27 +08:00
An Tao
51814b76da
Add the setTimeout() method to the ReidsClient class (#830) 2021-04-30 08:00:11 +08:00
An Tao
685aaaa3da
Add the setTimeout() method to the DbClient class (#823) 2021-04-29 10:13:34 +08:00
An Tao
a33bf2bf34
Send the content-length header even if the body(POST,PUT,OPTIONS,PATCH) is empty (#825) 2021-04-28 18:04:57 +08:00
Martin Chang
88c6b6e7d4
Disallow coroutines to be resolved as plain subroutine handlers (#827) 2021-04-28 16:58:03 +08:00
An Tao
87d8123276
[HttpClientImpl] Remove the related request from the buffer if it's not sent after the timeout (#818) 2021-04-24 21:05:13 +08:00
An Tao
e83026230a
Little changes (#810)
1. Put parameters in query string if the content-type is not 'application/x-www-form-urlencoded'
2. Parse the mulitpart form data if the method is POST or PUT
3. Send query string when the passThrough flag is set
2021-04-18 21:00:20 +08:00
0rangeFox
df51674792
Enhancements on files part. (#803)
Co-authored-by: an-tao <antao2002@gmail.com>
2021-04-17 14:01:06 +08:00
Bertrand Darbon
0ec2f51fbf
Add option to set default handler (#802) 2021-04-16 18:49:39 +08:00
An Tao
ab5eb955b4
Fix unused parameter errors/warnings (#805) 2021-04-15 23:26:58 +08:00
Bertrand Darbon
44a8a2d5f7
Add GNU -Werror & fix warnings (#801) 2021-04-15 19:27:15 +08:00
An Tao
4eeba18088
Improve the MultiPartParser class (#800) 2021-04-14 23:26:38 +08:00
An Tao
ba8c7b5bca
Fix a bug of reflection failure introduced by #745 (#793) 2021-04-10 20:18:51 +08:00
Bertrand Darbon
54727a5dbe
Add exports macro to allow Shared Library with hidden symbols by default (e.g. Windows) (#745)
Co-authored-by: an-tao <antao2002@gmail.com>
2021-04-09 10:17:28 +08:00
Martin Chang
a81a5fa63e
Use lambda instead of std::bind in HttpServer (#787) 2021-04-06 23:13:53 +08:00
Martin Chang
a19d0427ed
Catch exceptions thrown by handlers (#773) 2021-03-28 10:56:23 +08:00
An Tao
564fc67649
Add a method to HttpRequest to set the user_agent header (#772) 2021-03-26 20:37:46 +08:00
mekashef
686068065a
Added newFileResponse Support for buffers in memory (#770) 2021-03-26 20:37:05 +08:00
interfector18
49181a22b2
Use canonical cmakelogic for cross compilation, (#768)
Fix clang c++20 build
2021-03-25 04:27:52 +08:00
An Tao
5f60c9fc6c
Send ping messages by default for websockets (#767) 2021-03-24 22:59:57 +08:00
An Tao
0bf37c6052
Remove an assertion statement in the HttpClientImpl class (#764) 2021-03-23 14:36:20 +08:00
klaus triendl
bd9a149059
Use canonical way of calling max() function on Windows (#763) 2021-03-23 08:37:26 +08:00
Martin Chang
9da122a189
print error and exit when IP parsing failed in server startup (#758) 2021-03-20 00:13:58 +08:00
Martin Chang
490948bb38
remove 'SSL validation' comment from HttpClient (#752) 2021-03-14 13:55:21 +08:00
An Tao
6d9aa3b44c
Add redis support (#719) 2021-03-13 19:13:54 +08:00
Bertrand Darbon
bcd8e27a36
feature(signal): Add option to disable signal handling (#742) 2021-03-11 22:03:02 +08:00
Martin Chang
98da3490e7
return awaiter from coroutine instead of resumable (#733) 2021-03-05 22:21:02 +08:00
Martin Chang
8bd1f5684e
Fix drogon::Task<> not destructing internal object (#729) 2021-03-01 13:36:03 +08:00
JuergenGleiss
af2bd6ba69
HttpRequest: add feature to avoid url encoding of path (#730) 2021-02-28 23:42:15 +08:00
Martin Chang
cde19a1f57
Valivate certificate in HttpClient (#726)
Co-authored-by: an-tao <antao2002@gmail.com>
2021-02-22 11:45:33 +08:00
An Tao
0f5721119c
Support SNI in the HttpClient class (#724) 2021-02-21 16:05:58 +08:00
An Tao
eb2d24197a
Fix the error when SSL handshake fails (#717) 2021-02-15 09:15:26 +08:00
interfector18
12cfdd5916
Lowercase all http headers, add webp and avif types (#718) 2021-02-15 09:14:54 +08:00
An Tao
3b8b63d17d
Add drogon::orm::CoroMapper<T> template (#712)
Co-authored-by: marty1885 <marty188586@gmail.com>
2021-02-13 18:22:17 +08:00
interfector18
6542236b20
Add default value interface to sqlbinder for mysql and postgresql (#704) 2021-02-07 10:34:49 +08:00
An Tao
4c577e6fa9
Fix compilation errors on vs2019 (#706)
Fix compilation errors on VS2019 when coroutines are enabled
2021-02-06 19:53:30 +08:00
Martin Chang
a2142dd93e
Coroutine support (#693)
* app().registerHttpHandler() accepts coroutine as handlers
* HttpController can use coroutine as handlers'
* Http request handlers with coroutine catches exception instead of crashing the entire app
* DbClient now has execSqlCoro that is awaitable
* DbClient now has newTransactionCoro that is awaitable
* HttpClient have awaitable sendRequestCoro
* WebSocketClient have awaitable connectToServerCoro
* WebSocketClient have setAsyncMessageHandler and setAsyncConnectionClosedHandler
* drogon::AsyncTask and drogon::Task<T> as our corutine types
* Related tests
* Misc

Future work
* Coroutine for WebSocket server
* Known issues

co_future() and sync_wait may crash. It looks like GCC bug but I'm not sure.
Workarround: Make an coroutine of AsyncTask. Then launch said coroutine.
Not sure why wrapping the exact same thing in function crashes things.

Co-authored-by: an-tao <antao2002@gmail.com>
2021-02-06 17:05:58 +08:00
An Tao
7ce5768372
Return 404 or 405 responses correctly (#705) 2021-02-06 15:16:44 +08:00
An Tao
5426100bde
Fix a error in the HttpClient class when a response has no content-length header (#698) 2021-02-03 14:54:45 +08:00
Jiannan Liu
4b5885e3c0
Serve wasm files with the correct MIME type (#667) 2020-12-26 12:21:43 +08:00
An Tao
ec59dbbc3d
Add option for setting float precision in Json string (#666) 2020-12-24 20:00:29 +08:00
An Tao
ce704aff5b
Update trantor (#656)
* Update trantor
* Make some minor modifications.
2020-12-14 08:49:33 +08:00
ivanka2012
1abd8b3506
Add implicit page resolving capability (a-directory -> a-directory/index.html) (#647)
Co-authored-by: an-tao <antao2002@gmail.com>
2020-12-11 14:02:47 +08:00
An Tao
8b7ffb28d7
Add support in the SqlBinder class and the Session class (#644) 2020-12-06 11:41:06 +08:00
An Tao
7dd2d6123b
Add the reuse_port option (#634) 2020-11-25 19:47:36 +08:00
Martin Chang
4ca90f2415
Don't send content type in a 304 response (#630) 2020-11-18 22:31:55 +08:00
An Tao
4ce2d25d55
Return 400 if the content-length is invalid (#629) 2020-11-18 15:09:25 +08:00
Joakim L. Gilje
886dfc3648
Support OpenBSD (#626)
Co-authored-by: an-tao <antao2002@gmail.com>
2020-11-15 12:18:01 +08:00
An Tao
4f9ee82153
Modify the WebSocketTest controller to create a simple chat room (#625) 2020-11-14 11:48:40 +08:00