From 8d76733fadc280e6e22779d49cdd57e07f39f060 Mon Sep 17 00:00:00 2001 From: Sergey Lyubka <sergey.lyubka@cesanta.com> Date: Mon, 26 Jun 2017 21:34:16 +0100 Subject: [PATCH] Make mg_conn_addr_to_str return len Also amend api_net.js to use returned length. PUBLISHED_FROM=38e15f9587edf28049c5b9e5f126b4db159910e8 --- docs/c-api/util.h/mg_conn_addr_to_str.md | 7 ++++--- docs/c-api/util.h/mg_sock_addr_to_str.md | 4 ++-- mongoose.c | 15 ++++++++------- mongoose.h | 9 +++++---- 4 files changed, 19 insertions(+), 16 deletions(-) diff --git a/docs/c-api/util.h/mg_conn_addr_to_str.md b/docs/c-api/util.h/mg_conn_addr_to_str.md index e623734fb..b7603fb29 100644 --- a/docs/c-api/util.h/mg_conn_addr_to_str.md +++ b/docs/c-api/util.h/mg_conn_addr_to_str.md @@ -3,8 +3,8 @@ title: "mg_conn_addr_to_str()" decl_name: "mg_conn_addr_to_str" symbol_kind: "func" signature: | - void mg_conn_addr_to_str(struct mg_connection *nc, char *buf, size_t len, - int flags); + int mg_conn_addr_to_str(struct mg_connection *c, char *buf, size_t len, + int flags); --- Converts a connection's local or remote address into string. @@ -17,5 +17,6 @@ see `MG_SOCK_STRINGIFY_*` definitions. - MG_SOCK_STRINGIFY_REMOTE - print remote peer's IP/port, not local address If both port number and IP address are printed, they are separated by `:`. -If compiled with `-DMG_ENABLE_IPV6`, IPv6 addresses are supported. +If compiled with `-DMG_ENABLE_IPV6`, IPv6 addresses are supported. +Return length of the stringified address. diff --git a/docs/c-api/util.h/mg_sock_addr_to_str.md b/docs/c-api/util.h/mg_sock_addr_to_str.md index 3502e135e..b5cb6fddd 100644 --- a/docs/c-api/util.h/mg_sock_addr_to_str.md +++ b/docs/c-api/util.h/mg_sock_addr_to_str.md @@ -3,8 +3,8 @@ title: "mg_sock_addr_to_str()" decl_name: "mg_sock_addr_to_str" symbol_kind: "func" signature: | - void mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, - int flags); + int mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, + int flags); --- Convert the socket's address into string. diff --git a/mongoose.c b/mongoose.c index ca80bd4bd..677ce124f 100644 --- a/mongoose.c +++ b/mongoose.c @@ -9541,10 +9541,10 @@ void mg_set_close_on_exec(sock_t sock) { #endif } -void mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, - int flags) { +int mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, + int flags) { int is_v6; - if (buf == NULL || len <= 0) return; + if (buf == NULL || len <= 0) return 0; memset(buf, 0, len); #if MG_ENABLE_IPV6 is_v6 = sa->sa.sa_family == AF_INET6; @@ -9594,18 +9594,19 @@ void mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, } } - return; + return strlen(buf); cleanup: *buf = '\0'; + return 0; } -void mg_conn_addr_to_str(struct mg_connection *nc, char *buf, size_t len, - int flags) { +int mg_conn_addr_to_str(struct mg_connection *nc, char *buf, size_t len, + int flags) { union socket_address sa; memset(&sa, 0, sizeof(sa)); mg_if_get_conn_addr(nc, flags & MG_SOCK_STRINGIFY_REMOTE, &sa); - mg_sock_addr_to_str(&sa, buf, len, flags); + return mg_sock_addr_to_str(&sa, buf, len, flags); } #if MG_ENABLE_HEXDUMP diff --git a/mongoose.h b/mongoose.h index bed636339..64a9250b8 100644 --- a/mongoose.h +++ b/mongoose.h @@ -4001,9 +4001,10 @@ void mg_set_close_on_exec(sock_t); * * If both port number and IP address are printed, they are separated by `:`. * If compiled with `-DMG_ENABLE_IPV6`, IPv6 addresses are supported. + * Return length of the stringified address. */ -void mg_conn_addr_to_str(struct mg_connection *nc, char *buf, size_t len, - int flags); +int mg_conn_addr_to_str(struct mg_connection *c, char *buf, size_t len, + int flags); #if MG_NET_IF == MG_NET_IF_SOCKET /* Legacy interface. */ void mg_sock_to_str(sock_t sock, char *buf, size_t len, int flags); @@ -4014,8 +4015,8 @@ void mg_sock_to_str(sock_t sock, char *buf, size_t len, int flags); * * `flags` is MG_SOCK_STRINGIFY_IP and/or MG_SOCK_STRINGIFY_PORT. */ -void mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, - int flags); +int mg_sock_addr_to_str(const union socket_address *sa, char *buf, size_t len, + int flags); #if MG_ENABLE_HEXDUMP /* -- GitLab