From 321e436749a930f41e8fb440f84538174c57f701 Mon Sep 17 00:00:00 2001 From: Frank Ueberschar Date: Fri, 14 Aug 2020 10:56:52 +0200 Subject: [PATCH] lib: dynamic allocation of buffers for address list --- core/src/lib/bnet_server_tcp.cc | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/lib/bnet_server_tcp.cc b/core/src/lib/bnet_server_tcp.cc index 0d1b256a76e..a0da08c281c 100644 --- a/core/src/lib/bnet_server_tcp.cc +++ b/core/src/lib/bnet_server_tcp.cc @@ -55,8 +55,10 @@ #elif HAVE_SYS_POLL_H #include #endif + #include #include +#include static pthread_mutex_t mutex = PTHREAD_MUTEX_INITIALIZER; static std::atomic quit{false}; @@ -150,10 +152,10 @@ static void RemoveDuplicateAddresses(dlist* addr_list) static void LogAllAddresses(dlist* addr_list) { - std::array allbuf; + std::vector buf(256 * addr_list->size()); Dmsg1(100, "Addresses %s\n", - BuildAddressesString(addr_list, allbuf.data(), allbuf.size())); + BuildAddressesString(addr_list, buf.data(), buf.size())); } static int OpenSocketAndBind(IPADDR* ipaddr, @@ -173,11 +175,13 @@ static int OpenSocketAndBind(IPADDR* ipaddr, if (fd < 0) { BErrNo be; std::array buf1; - std::array buf2; + std::vector buf2(256 * addr_list->size()); + Emsg3(M_ABORT, 0, _("Cannot open stream socket. ERR=%s. Current %s All %s\n"), be.bstrerror(), ipaddr->build_address_str(buf1.data(), buf1.size()), BuildAddressesString(addr_list, buf2.data(), buf2.size())); + return -1; }