From 940461de1806bbffbfe6f8e12b18171c39f52648 Mon Sep 17 00:00:00 2001 From: Yves Rutschle Date: Fri, 5 Jan 2024 11:15:53 +0100 Subject: [PATCH] check name resolution error to avoid segfault --- udp-listener.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/udp-listener.c b/udp-listener.c index bc7a3f4..d3f5590 100644 --- a/udp-listener.c +++ b/udp-listener.c @@ -225,13 +225,16 @@ static void mark_active(struct connection* cnx) /* Creates a new non-blocking socket */ static int nonblocking_socket(struct sslhcfg_protocols_item* proto) { + int res; + if (proto->resolve_on_forward) { - resolve_split_name(&(proto->saddr), proto->host, - proto->port); + res = resolve_split_name(&(proto->saddr), proto->host, + proto->port); + if (res) return -1; } int out = socket(proto->saddr->ai_family, SOCK_DGRAM, 0); - int res = set_nonblock(out); + res = set_nonblock(out); if (res == -1) { print_message(msg_system_error, "%s:%d:%s:%d:%s\n", __FILE__, __LINE__, "udp:socket:nonblock", errno, strerror(errno)); close(out);