diff --git a/src/ae.cpp b/src/ae.cpp index cf4db75bb..9c1155a2f 100644 --- a/src/ae.cpp +++ b/src/ae.cpp @@ -132,6 +132,7 @@ static_assert(sizeof(aeCommand) <= PIPE_BUF, "aeCommand must be small enough to void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int ) { + std::unique_lock ulock(g_lock, std::defer_lock); aeCommand cmd; for (;;) { @@ -153,8 +154,7 @@ void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int ) case AE_ASYNC_OP::PostFunction: { - std::unique_lock ulock(g_lock, std::defer_lock); - if (cmd.fLock) + if (cmd.fLock && !ulock.owns_lock()) ulock.lock(); ((aePostFunctionProc*)cmd.proc)(cmd.clientData); break; @@ -162,8 +162,7 @@ void aeProcessCmd(aeEventLoop *eventLoop, int fd, void *, int ) case AE_ASYNC_OP::PostCppFunction: { - std::unique_lock ulock(g_lock, std::defer_lock); - if (cmd.fLock) + if (cmd.fLock && !ulock.owns_lock()) ulock.lock(); (*cmd.pfn)(); diff --git a/src/networking.cpp b/src/networking.cpp index 9f6c4c185..a7920b692 100644 --- a/src/networking.cpp +++ b/src/networking.cpp @@ -1239,7 +1239,7 @@ void clientAcceptHandler(connection *conn) { } #define MAX_ACCEPTS_PER_CALL 1000 -#define MAX_ACCEPTS_PER_CALL_TLS 1 +#define MAX_ACCEPTS_PER_CALL_TLS 100 static void acceptCommonHandler(connection *conn, int flags, char *ip, int iel) { client *c; char conninfo[100];