From 26136610a020e3f9ab01950d3d9c597c2ff37085 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Mon, 23 Sep 2024 11:25:53 -0400 Subject: [PATCH] MT#55283 add _print_gstring helpers Use a small stack buffer instead of obtaining a thread-local one when writing directly to a GString. Change-Id: Ia15b8eee365ddb14e35eddc72358c4793ccba7d9 --- lib/socket.h | 20 ++++++++++++++++++++ 1 file changed, 20 insertions(+) diff --git a/lib/socket.h b/lib/socket.h index e5bd0da57..fbb4a4025 100644 --- a/lib/socket.h +++ b/lib/socket.h @@ -134,6 +134,15 @@ INLINE char *sockaddr_print_buf(const sockaddr_t *a) { sockaddr_print(a, buf, THREAD_BUF_SIZE); return buf; } +INLINE int sockaddr_print_gstring(GString *s, const sockaddr_t *a) { + if (!a->family) + return 0; + char buf[THREAD_BUF_SIZE]; + if (sockaddr_print(a, buf, THREAD_BUF_SIZE)) + return -1; + g_string_append(s, buf); + return 0; +} INLINE int sockaddr_print_p(const sockaddr_t *a, char *buf, size_t len) { if (!a->family) { buf[0] = '\0'; @@ -161,12 +170,23 @@ INLINE char *sockaddr_print_port_buf(const sockaddr_t *a, unsigned int port) { sockaddr_print_port(a, port, buf, THREAD_BUF_SIZE); return buf; } +INLINE int sockaddr_print_port_gstring(GString *s, const sockaddr_t *a, unsigned int port) { + char buf[THREAD_BUF_SIZE]; + if (sockaddr_print_port(a, port, buf, THREAD_BUF_SIZE)) + return -1; + g_string_append(s, buf); + return 0; + +} INLINE int endpoint_print(const endpoint_t *ep, char *buf, size_t len) { return sockaddr_print_port(&ep->address, ep->port, buf, len); } INLINE char *endpoint_print_buf(const endpoint_t *ep) { return sockaddr_print_port_buf(&ep->address, ep->port); } +INLINE int endpoint_print_gstring(GString *s, const endpoint_t *ep) { + return sockaddr_print_port_gstring(s, &ep->address, ep->port); +} INLINE int is_addr_unspecified(const sockaddr_t *a) { if (!a || !a->family) return 1;