mirror of
https://github.com/cesanta/mongoose.git
synced 2025-06-06 00:22:44 +08:00
MG_DISABLE_SOCKETPAIR -> MG_ENABLE_BROADCAST
PUBLISHED_FROM=81b6289a4b54043df557142f0de8cc66bc5190d4
This commit is contained in:
parent
1dae0373c8
commit
37e4f51668
@ -8,7 +8,7 @@ signature: |
|
||||
#if MG_ENABLE_HEXDUMP
|
||||
const char *hexdump_file; /* Debug hexdump file path */
|
||||
#endif
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
sock_t ctl[2]; /* Socketpair for mg_broadcast() */
|
||||
#endif
|
||||
void *user_data; /* User data */
|
||||
|
@ -5,5 +5,4 @@ title: Disabling flags
|
||||
- `MG_DISABLE_HTTP_DIGEST_AUTH` disable HTTP Digest (MD5) authorisation support
|
||||
- `MG_DISABLE_SHA1` disable SHA1 support (used by WebSocket)
|
||||
- `MG_DISABLE_MD5` disable MD5 support (used by HTTP auth)
|
||||
- `MG_DISABLE_SOCKETPAIR` disable `mg_broadcast()` API
|
||||
- `MG_DISABLE_HTTP_KEEP_ALIVE` useful for embedded systems to save resources
|
||||
|
@ -3,7 +3,7 @@ title: Enabling flags
|
||||
---
|
||||
|
||||
- `MG_ENABLE_SSL` Enable [SSL/TLS support](https://docs.cesanta.com/mongoose/master/#/http/ssl.md/) (OpenSSL API)
|
||||
- `MG_ENABLE_IPV6` Enable IPV6 support
|
||||
- `MG_ENABLE_IPV6` Enable IPv6 support
|
||||
- `MG_ENABLE_MQTT` enable [MQTT client](https://docs.cesanta.com/mongoose/master/#/mqtt/client_example.md/)
|
||||
- `MG_ENABLE_MQTT_BROKER` enable [MQTT broker](https://docs.cesanta.com/mongoose/master/#/mqtt/server_example.md/)
|
||||
- `MG_ENABLE_DNS_SERVER` enable DNS server
|
||||
@ -14,5 +14,6 @@ title: Enabling flags
|
||||
- `MG_ENABLE_HTTP_SSI_EXEC` Enable SSI `exec` operator
|
||||
- `MG_ENABLE_HTTP_WEBDAV` enable WebDAV extensions to HTTP
|
||||
- `MG_ENABLE_HTTP_WEBSOCKET` enable WebSocket extension to HTTP (on by default, =0 to disable)
|
||||
- `MG_ENABLE_BROADCAST` enable `mg_broadcast()` API
|
||||
- `MG_ENABLE_GETADDRINFO` enable `getaddrinfo()` in `mg_resolve2()`
|
||||
- `MG_ENABLE_THREADS` enable `mg_start_thread()` API
|
||||
|
21
mongoose.c
21
mongoose.c
@ -45,7 +45,6 @@
|
||||
|
||||
#ifdef PICOTCP
|
||||
#define NO_LIBC
|
||||
#define MG_DISABLE_SOCKETPAIR
|
||||
#define MG_DISABLE_PFS
|
||||
#endif
|
||||
|
||||
@ -1864,7 +1863,7 @@ void mg_close_conn(struct mg_connection *conn) {
|
||||
|
||||
void mg_mgr_init(struct mg_mgr *m, void *user_data) {
|
||||
memset(m, 0, sizeof(*m));
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
m->ctl[0] = m->ctl[1] = INVALID_SOCKET;
|
||||
#endif
|
||||
m->user_data = user_data;
|
||||
@ -1929,7 +1928,7 @@ void mg_mgr_free(struct mg_mgr *m) {
|
||||
/* Do one last poll, see https://github.com/cesanta/mongoose/issues/286 */
|
||||
mg_mgr_poll(m, 0);
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
if (m->ctl[0] != INVALID_SOCKET) closesocket(m->ctl[0]);
|
||||
if (m->ctl[1] != INVALID_SOCKET) closesocket(m->ctl[1]);
|
||||
m->ctl[0] = m->ctl[1] = INVALID_SOCKET;
|
||||
@ -2688,7 +2687,7 @@ struct mg_connection *mg_next(struct mg_mgr *s, struct mg_connection *conn) {
|
||||
return conn == NULL ? s->active_connections : conn->next;
|
||||
}
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
void mg_broadcast(struct mg_mgr *mgr, mg_event_handler_t cb, void *data,
|
||||
size_t len) {
|
||||
struct ctl_msg ctl_msg;
|
||||
@ -2712,7 +2711,7 @@ void mg_broadcast(struct mg_mgr *mgr, mg_event_handler_t cb, void *data,
|
||||
(void) dummy; /* https://gcc.gnu.org/bugzilla/show_bug.cgi?id=25509 */
|
||||
}
|
||||
}
|
||||
#endif /* MG_DISABLE_SOCKETPAIR */
|
||||
#endif /* MG_ENABLE_BROADCAST */
|
||||
|
||||
static int isbyte(int n) {
|
||||
return n >= 0 && n <= 255;
|
||||
@ -3263,7 +3262,7 @@ void mg_mgr_handle_conn(struct mg_connection *nc, int fd_flags, double now) {
|
||||
(int) nc->recv_mbuf.len, (int) nc->send_mbuf.len));
|
||||
}
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
static void mg_mgr_handle_ctl_sock(struct mg_mgr *mgr) {
|
||||
struct ctl_msg ctl_msg;
|
||||
int len =
|
||||
@ -3291,7 +3290,7 @@ void mg_sock_set(struct mg_connection *nc, sock_t sock) {
|
||||
void mg_ev_mgr_init(struct mg_mgr *mgr) {
|
||||
(void) mgr;
|
||||
DBG(("%p using select()", mgr));
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
do {
|
||||
mg_socketpair(mgr->ctl, SOCK_DGRAM);
|
||||
} while (mgr->ctl[0] == INVALID_SOCKET);
|
||||
@ -3338,7 +3337,7 @@ time_t mg_mgr_poll(struct mg_mgr *mgr, int timeout_ms) {
|
||||
FD_ZERO(&read_set);
|
||||
FD_ZERO(&write_set);
|
||||
FD_ZERO(&err_set);
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
mg_add_to_set(mgr->ctl[1], &read_set, &max_fd);
|
||||
#endif
|
||||
|
||||
@ -3408,7 +3407,7 @@ time_t mg_mgr_poll(struct mg_mgr *mgr, int timeout_ms) {
|
||||
DBG(("select @ %ld num_ev=%d of %d, timeout=%d", (long) now, num_ev, num_fds,
|
||||
timeout_ms));
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
if (num_ev > 0 && mgr->ctl[1] != INVALID_SOCKET &&
|
||||
FD_ISSET(mgr->ctl[1], &read_set)) {
|
||||
mg_mgr_handle_ctl_sock(mgr);
|
||||
@ -3446,7 +3445,7 @@ time_t mg_mgr_poll(struct mg_mgr *mgr, int timeout_ms) {
|
||||
return (time_t) now;
|
||||
}
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
int mg_socketpair(sock_t sp[2], int sock_type) {
|
||||
union socket_address sa;
|
||||
sock_t sock;
|
||||
@ -3488,7 +3487,7 @@ int mg_socketpair(sock_t sp[2], int sock_type) {
|
||||
|
||||
return ret;
|
||||
}
|
||||
#endif /* MG_DISABLE_SOCKETPAIR */
|
||||
#endif /* MG_ENABLE_BROADCAST */
|
||||
|
||||
static void mg_sock_get_addr(sock_t sock, int remote,
|
||||
union socket_address *sa) {
|
||||
|
46
mongoose.h
46
mongoose.h
@ -249,6 +249,10 @@ typedef struct _stati64 cs_stat_t;
|
||||
#define CS_ENABLE_STDIO 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_BROADCAST
|
||||
#define MG_ENABLE_BROADCAST 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_DIRECTORY_LISTING
|
||||
#define MG_ENABLE_DIRECTORY_LISTING 1
|
||||
#endif
|
||||
@ -257,6 +261,10 @@ typedef struct _stati64 cs_stat_t;
|
||||
#define MG_ENABLE_FILESYSTEM 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP_CGI
|
||||
#define MG_ENABLE_HTTP_CGI 1
|
||||
#endif
|
||||
|
||||
#endif /* CS_PLATFORM == CS_P_WINDOWS */
|
||||
#endif /* CS_COMMON_PLATFORMS_PLATFORM_WINDOWS_H_ */
|
||||
#ifdef MG_MODULE_LINES
|
||||
@ -363,6 +371,10 @@ typedef struct stat cs_stat_t;
|
||||
#define CS_ENABLE_STDIO 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_BROADCAST
|
||||
#define MG_ENABLE_BROADCAST 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_DIRECTORY_LISTING
|
||||
#define MG_ENABLE_DIRECTORY_LISTING 1
|
||||
#endif
|
||||
@ -371,6 +383,10 @@ typedef struct stat cs_stat_t;
|
||||
#define MG_ENABLE_FILESYSTEM 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP_CGI
|
||||
#define MG_ENABLE_HTTP_CGI 1
|
||||
#endif
|
||||
|
||||
#endif /* CS_PLATFORM == CS_P_UNIX */
|
||||
#endif /* CS_COMMON_PLATFORMS_PLATFORM_UNIX_H_ */
|
||||
#ifdef MG_MODULE_LINES
|
||||
@ -462,7 +478,6 @@ void mg_lwip_set_keepalive_params(struct mg_connection *nc, int idle,
|
||||
#include <time.h>
|
||||
|
||||
#define MG_SOCKET_SIMPLELINK 1
|
||||
#define MG_DISABLE_SOCKETPAIR 1
|
||||
#define MG_DISABLE_SYNC_RESOLVER 1
|
||||
|
||||
/*
|
||||
@ -517,7 +532,6 @@ int inet_pton(int af, const char *src, void *dst);
|
||||
#endif
|
||||
|
||||
#define MG_SOCKET_SIMPLELINK 1
|
||||
#define MG_DISABLE_SOCKETPAIR 1
|
||||
#define MG_DISABLE_SYNC_RESOLVER 1
|
||||
|
||||
/* Only SPIFFS supports directories, SLFS does not. */
|
||||
@ -653,7 +667,6 @@ struct dirent *readdir(DIR *dir);
|
||||
#endif
|
||||
|
||||
#define MG_SOCKET_SIMPLELINK 1
|
||||
#define MG_DISABLE_SOCKETPAIR 1
|
||||
#define MG_DISABLE_SYNC_RESOLVER 1
|
||||
|
||||
/* Amalgamated: #include "common/platforms/simplelink/cs_simplelink.h" */
|
||||
@ -1393,10 +1406,6 @@ const char *c_strnstr(const char *s, const char *find, size_t slen);
|
||||
#define MG_DISABLE_SOCKET_IF 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_DISABLE_SOCKETPAIR
|
||||
#define MG_DISABLE_SOCKETPAIR 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_DISABLE_SYNC_RESOLVER
|
||||
#define MG_DISABLE_SYNC_RESOLVER 0
|
||||
#endif
|
||||
@ -1405,13 +1414,8 @@ const char *c_strnstr(const char *s, const char *find, size_t slen);
|
||||
#define MG_DISABLE_WS_RANDOM_MASK 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP
|
||||
#define MG_ENABLE_HTTP 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP_CGI
|
||||
#define MG_ENABLE_HTTP_CGI \
|
||||
(CS_PLATFORM == CS_P_UNIX || CS_PLATFORM == CS_P_WINDOWS)
|
||||
#ifndef MG_ENABLE_BROADCAST
|
||||
#define MG_ENABLE_BROADCAST 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_COAP
|
||||
@ -1446,6 +1450,14 @@ const char *c_strnstr(const char *s, const char *find, size_t slen);
|
||||
#define MG_ENABLE_HEXDUMP CS_ENABLE_STDIO
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP
|
||||
#define MG_ENABLE_HTTP 1
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP_CGI
|
||||
#define MG_ENABLE_HTTP_CGI 0
|
||||
#endif
|
||||
|
||||
#ifndef MG_ENABLE_HTTP_SSI
|
||||
#define MG_ENABLE_HTTP_SSI MG_ENABLE_FILESYSTEM
|
||||
#endif
|
||||
@ -1505,8 +1517,6 @@ const char *c_strnstr(const char *s, const char *find, size_t slen);
|
||||
#ifdef MG_NO_BSD_SOCKETS
|
||||
#undef MG_DISABLE_SYNC_RESOLVER
|
||||
#define MG_DISABLE_SYNC_RESOLVER 1
|
||||
#undef MG_DISABLE_SOCKETPAIR
|
||||
#define MG_DISABLE_SOCKETPAIR 1
|
||||
#endif /* MG_NO_BSD_SOCKETS */
|
||||
|
||||
/* MQTT broker requires MQTT */
|
||||
@ -1617,7 +1627,7 @@ struct mg_mgr {
|
||||
#if MG_ENABLE_HEXDUMP
|
||||
const char *hexdump_file; /* Debug hexdump file path */
|
||||
#endif
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
sock_t ctl[2]; /* Socketpair for mg_broadcast() */
|
||||
#endif
|
||||
void *user_data; /* User data */
|
||||
@ -1723,7 +1733,7 @@ void mg_mgr_free(struct mg_mgr *);
|
||||
*/
|
||||
time_t mg_mgr_poll(struct mg_mgr *, int milli);
|
||||
|
||||
#if !MG_DISABLE_SOCKETPAIR
|
||||
#if MG_ENABLE_BROADCAST
|
||||
/*
|
||||
* Passes a message of a given length to all connections.
|
||||
*
|
||||
|
Loading…
Reference in New Issue
Block a user