mirror of
https://github.com/cesanta/mongoose.git
synced 2024-12-27 06:51:04 +08:00
Refactor mg_socketpair and document MG_ENABLE_NATIVE_SOCKETPAIR
This commit is contained in:
parent
2407509ce0
commit
86f43cd8d6
@ -241,6 +241,7 @@ Here is a list of build constants and their default values:
|
|||||||
|MG_ENABLE_LOG | 1 | Enable `LOG()` macro |
|
|MG_ENABLE_LOG | 1 | Enable `LOG()` macro |
|
||||||
|MG_ENABLE_MD5 | 0 | Use native MD5 implementation |
|
|MG_ENABLE_MD5 | 0 | Use native MD5 implementation |
|
||||||
|MG_ENABLE_SOCKETPAIR | 0 | Enable `mg_socketpair()` for multi-threading |
|
|MG_ENABLE_SOCKETPAIR | 0 | Enable `mg_socketpair()` for multi-threading |
|
||||||
|
|MG_ENABLE_NATIVE_SOCKETPAIR | 0 | Use native `socketpair()` syscall for `mg_socketpair()`|
|
||||||
|MG_ENABLE_SSI | 1 | Enable serving SSI files by `mg_http_serve_dir()` |
|
|MG_ENABLE_SSI | 1 | Enable serving SSI files by `mg_http_serve_dir()` |
|
||||||
|MG_ENABLE_DIRLIST | 0 | Enable directory listing |
|
|MG_ENABLE_DIRLIST | 0 | Enable directory listing |
|
||||||
|MG_ENABLE_CUSTOM_RANDOM | 0 | Provide custom RNG function `mg_random()` |
|
|MG_ENABLE_CUSTOM_RANDOM | 0 | Provide custom RNG function `mg_random()` |
|
||||||
|
13
mongoose.c
13
mongoose.c
@ -2855,8 +2855,8 @@ typedef Socket_t SOCKET;
|
|||||||
typedef int SOCKET;
|
typedef int SOCKET;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FD(c_) ((SOCKET)(size_t)(c_)->fd)
|
#define FD(c_) ((SOCKET) (size_t) (c_)->fd)
|
||||||
#define S2PTR(s_) ((void *) (size_t)(s_))
|
#define S2PTR(s_) ((void *) (size_t) (s_))
|
||||||
|
|
||||||
#ifndef MSG_NONBLOCKING
|
#ifndef MSG_NONBLOCKING
|
||||||
#define MSG_NONBLOCKING 0
|
#define MSG_NONBLOCKING 0
|
||||||
@ -3231,9 +3231,8 @@ static void accept_conn(struct mg_mgr *mgr, struct mg_connection *lsn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MG_ENABLE_SOCKETPAIR
|
|
||||||
bool mg_socketpair(int *s1, int *s2) {
|
bool mg_socketpair(int *s1, int *s2) {
|
||||||
#ifdef MG_ENABLE_NATIVE_SOCKETPAIR
|
#if MG_ENABLE_NATIVE_SOCKETPAIR
|
||||||
// For some reason, native socketpair() call fails on Macos
|
// For some reason, native socketpair() call fails on Macos
|
||||||
// Enable this codepath only when MG_ENABLE_NATIVE_SOCKETPAIR is defined
|
// Enable this codepath only when MG_ENABLE_NATIVE_SOCKETPAIR is defined
|
||||||
int sp[2], ret = 0;
|
int sp[2], ret = 0;
|
||||||
@ -3242,7 +3241,7 @@ bool mg_socketpair(int *s1, int *s2) {
|
|||||||
}
|
}
|
||||||
LOG(LL_INFO, ("errno %d", errno));
|
LOG(LL_INFO, ("errno %d", errno));
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
#elif MG_ENABLE_SOCKETPAIR
|
||||||
union usa sa, sa2;
|
union usa sa, sa2;
|
||||||
SOCKET sp[2] = {INVALID_SOCKET, INVALID_SOCKET};
|
SOCKET sp[2] = {INVALID_SOCKET, INVALID_SOCKET};
|
||||||
socklen_t len = sizeof(sa.sin);
|
socklen_t len = sizeof(sa.sin);
|
||||||
@ -3269,9 +3268,11 @@ bool mg_socketpair(int *s1, int *s2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
#else
|
||||||
|
*s1 = *s2 = INVALID_SOCKET;
|
||||||
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
|
struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
|
||||||
mg_event_handler_t fn, void *fn_data) {
|
mg_event_handler_t fn, void *fn_data) {
|
||||||
|
@ -66,6 +66,10 @@ extern "C" {
|
|||||||
#define MG_ENABLE_SOCKETPAIR 0
|
#define MG_ENABLE_SOCKETPAIR 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MG_ENABLE_NATIVE_SOCKETPAIR
|
||||||
|
#define MG_ENABLE_NATIVE_SOCKETPAIR 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MG_ENABLE_CUSTOM_RANDOM
|
#ifndef MG_ENABLE_CUSTOM_RANDOM
|
||||||
#define MG_ENABLE_CUSTOM_RANDOM 0
|
#define MG_ENABLE_CUSTOM_RANDOM 0
|
||||||
#endif
|
#endif
|
||||||
|
@ -41,6 +41,10 @@
|
|||||||
#define MG_ENABLE_SOCKETPAIR 0
|
#define MG_ENABLE_SOCKETPAIR 0
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifndef MG_ENABLE_NATIVE_SOCKETPAIR
|
||||||
|
#define MG_ENABLE_NATIVE_SOCKETPAIR 0
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifndef MG_ENABLE_CUSTOM_RANDOM
|
#ifndef MG_ENABLE_CUSTOM_RANDOM
|
||||||
#define MG_ENABLE_CUSTOM_RANDOM 0
|
#define MG_ENABLE_CUSTOM_RANDOM 0
|
||||||
#endif
|
#endif
|
||||||
|
13
src/sock.c
13
src/sock.c
@ -28,8 +28,8 @@ typedef Socket_t SOCKET;
|
|||||||
typedef int SOCKET;
|
typedef int SOCKET;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define FD(c_) ((SOCKET)(size_t)(c_)->fd)
|
#define FD(c_) ((SOCKET) (size_t) (c_)->fd)
|
||||||
#define S2PTR(s_) ((void *) (size_t)(s_))
|
#define S2PTR(s_) ((void *) (size_t) (s_))
|
||||||
|
|
||||||
#ifndef MSG_NONBLOCKING
|
#ifndef MSG_NONBLOCKING
|
||||||
#define MSG_NONBLOCKING 0
|
#define MSG_NONBLOCKING 0
|
||||||
@ -404,9 +404,8 @@ static void accept_conn(struct mg_mgr *mgr, struct mg_connection *lsn) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if MG_ENABLE_SOCKETPAIR
|
|
||||||
bool mg_socketpair(int *s1, int *s2) {
|
bool mg_socketpair(int *s1, int *s2) {
|
||||||
#ifdef MG_ENABLE_NATIVE_SOCKETPAIR
|
#if MG_ENABLE_NATIVE_SOCKETPAIR
|
||||||
// For some reason, native socketpair() call fails on Macos
|
// For some reason, native socketpair() call fails on Macos
|
||||||
// Enable this codepath only when MG_ENABLE_NATIVE_SOCKETPAIR is defined
|
// Enable this codepath only when MG_ENABLE_NATIVE_SOCKETPAIR is defined
|
||||||
int sp[2], ret = 0;
|
int sp[2], ret = 0;
|
||||||
@ -415,7 +414,7 @@ bool mg_socketpair(int *s1, int *s2) {
|
|||||||
}
|
}
|
||||||
LOG(LL_INFO, ("errno %d", errno));
|
LOG(LL_INFO, ("errno %d", errno));
|
||||||
return ret;
|
return ret;
|
||||||
#else
|
#elif MG_ENABLE_SOCKETPAIR
|
||||||
union usa sa, sa2;
|
union usa sa, sa2;
|
||||||
SOCKET sp[2] = {INVALID_SOCKET, INVALID_SOCKET};
|
SOCKET sp[2] = {INVALID_SOCKET, INVALID_SOCKET};
|
||||||
socklen_t len = sizeof(sa.sin);
|
socklen_t len = sizeof(sa.sin);
|
||||||
@ -442,9 +441,11 @@ bool mg_socketpair(int *s1, int *s2) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
|
#else
|
||||||
|
*s1 = *s2 = INVALID_SOCKET;
|
||||||
|
return false;
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
#endif
|
|
||||||
|
|
||||||
struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
|
struct mg_connection *mg_listen(struct mg_mgr *mgr, const char *url,
|
||||||
mg_event_handler_t fn, void *fn_data) {
|
mg_event_handler_t fn, void *fn_data) {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user