From 234b7054fa8a6441e59cf85046bdf92a48778332 Mon Sep 17 00:00:00 2001 From: Maxim Sharabayko Date: Fri, 19 Apr 2024 10:55:02 +0200 Subject: [PATCH] SC route: keep listener open. --- xtransmit/route.cpp | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/xtransmit/route.cpp b/xtransmit/route.cpp index 5056744..c0b0211 100644 --- a/xtransmit/route.cpp +++ b/xtransmit/route.cpp @@ -85,6 +85,7 @@ void xtransmit::route::run(const vector& src_urls, const vector& parsed_dst_urls.emplace_back(url); } + try { const bool write_stats = cfg.stats_file != "" && cfg.stats_freq_ms > 0; // make_unique is not supported by GCC 4.8, only starting from GCC 4.9 :( @@ -92,8 +93,10 @@ void xtransmit::route::run(const vector& src_urls, const vector& ? unique_ptr(new socket::stats_writer(cfg.stats_file, cfg.stats_format, milliseconds(cfg.stats_freq_ms))) : nullptr; - shared_sock dst = create_connection(parsed_dst_urls); - shared_sock src = create_connection(parsed_src_urls); + shared_sock_t listening_sock_a; // A shared pointer to store a listening socket for multiple connections. + shared_sock_t listening_sock_b; // A shared pointer to store a listening socket for multiple connections. + shared_sock dst = create_connection(parsed_dst_urls, listening_sock_a); + shared_sock src = create_connection(parsed_src_urls, listening_sock_b); if (stats) {