diff --git a/docs/README.md b/docs/README.md index 6390e5ec..808a4966 100644 --- a/docs/README.md +++ b/docs/README.md @@ -657,7 +657,7 @@ Usage example: see [examples/multi-threaded](https://github.com/cesanta/mongoose ### mg\_mgr\_wakeup() ```c -void mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_len len); +bool mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_len len); ``` Wake up an event manager that sleeps in `mg_mgr_poll()` call. This function @@ -673,7 +673,7 @@ Parameters: - `buf` - a data to send to the pipe connection. Use `""` if there is no data - `len` - a data length -Return value: None +Return value: `true` if data has been sent, `false` otherwise Usage example: see [examples/multi-threaded](https://github.com/cesanta/mongoose/tree/master/examples/multi-threaded). diff --git a/mongoose.c b/mongoose.c index e584d019..03a0bf5c 100644 --- a/mongoose.c +++ b/mongoose.c @@ -3542,11 +3542,10 @@ static bool mg_socketpair(SOCKET sp[2], union usa usa[2]) { return result; } -void mg_mgr_wakeup(struct mg_connection *c, const void *buf, size_t len) { +bool mg_mgr_wakeup(struct mg_connection *c, const void *buf, size_t len) { if (buf == NULL || len == 0) buf = (void *) "", len = 1; - if ((size_t) send((SOCKET) (size_t) c->pfn_data, (const char *) buf, len, - MSG_NONBLOCKING) != len) - (void) 0; + return (size_t) send((SOCKET) (size_t) c->pfn_data, (const char *) buf, len, + MSG_NONBLOCKING) == len; } static void pf1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) { diff --git a/mongoose.h b/mongoose.h index ef18b6df..388ca955 100644 --- a/mongoose.h +++ b/mongoose.h @@ -953,7 +953,7 @@ bool mg_aton(struct mg_str str, struct mg_addr *addr); char *mg_ntoa(const struct mg_addr *addr, char *buf, size_t len); struct mg_connection *mg_mkpipe(struct mg_mgr *, mg_event_handler_t, void *); -void mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_t len); +bool mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_t len); // These functions are used to integrate with custom network stacks struct mg_connection *mg_alloc_conn(struct mg_mgr *); diff --git a/src/net.h b/src/net.h index aa895d6a..22f7b118 100644 --- a/src/net.h +++ b/src/net.h @@ -77,7 +77,7 @@ bool mg_aton(struct mg_str str, struct mg_addr *addr); char *mg_ntoa(const struct mg_addr *addr, char *buf, size_t len); struct mg_connection *mg_mkpipe(struct mg_mgr *, mg_event_handler_t, void *); -void mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_t len); +bool mg_mgr_wakeup(struct mg_connection *pipe, const void *buf, size_t len); // These functions are used to integrate with custom network stacks struct mg_connection *mg_alloc_conn(struct mg_mgr *); diff --git a/src/sock.c b/src/sock.c index e0453c24..ce774fb9 100644 --- a/src/sock.c +++ b/src/sock.c @@ -413,11 +413,10 @@ static bool mg_socketpair(SOCKET sp[2], union usa usa[2]) { return result; } -void mg_mgr_wakeup(struct mg_connection *c, const void *buf, size_t len) { +bool mg_mgr_wakeup(struct mg_connection *c, const void *buf, size_t len) { if (buf == NULL || len == 0) buf = (void *) "", len = 1; - if ((size_t) send((SOCKET) (size_t) c->pfn_data, (const char *) buf, len, - MSG_NONBLOCKING) != len) - (void) 0; + return (size_t) send((SOCKET) (size_t) c->pfn_data, (const char *) buf, len, + MSG_NONBLOCKING) == len; } static void pf1(struct mg_connection *c, int ev, void *ev_data, void *fn_data) {