From 5511fe9d978f5564d4079079cbb3d35a3176f037 Mon Sep 17 00:00:00 2001 From: nsgundy <3865838+nsgundy@users.noreply.github.com> Date: Mon, 15 Jan 2024 16:36:36 +0100 Subject: [PATCH 1/3] Support unicast sinks --- daemon/session_manager.cpp | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/daemon/session_manager.cpp b/daemon/session_manager.cpp index 7c1a18d..7e70c61 100644 --- a/daemon/session_manager.cpp +++ b/daemon/session_manager.cpp @@ -825,9 +825,15 @@ std::error_code SessionManager::add_sink(const StreamSink& sink) { BOOST_LOG_TRIVIAL(info) << "session_manager:: playout delay " << info.stream.m_ui32PlayOutDelay; - auto mcast_mac_addr = get_mcast_mac_addr(info.stream.m_ui32DestIP); - std::copy(std::begin(mcast_mac_addr), std::end(mcast_mac_addr), - info.stream.m_ui8DestMAC); + if (IN_MULTICAST(info.stream.m_ui32DestIP)) { + auto mcast_mac_addr = get_mcast_mac_addr(info.stream.m_ui32DestIP); + std::copy(std::begin(mcast_mac_addr), std::end(mcast_mac_addr), + info.stream.m_ui8DestMAC); + } else { + auto mac_addr = config_->get_mac_addr(); + std::copy(std::begin(mac_addr), std::end(mac_addr), + info.stream.m_ui8DestMAC); + } std::unique_lock sinks_lock(sinks_mutex_); auto const it = sinks_.find(sink.id); From 2cad593f3df533d8ac03e2f321b04312ddc99e92 Mon Sep 17 00:00:00 2001 From: Andrea Bondavalli Date: Sun, 21 Jan 2024 10:27:17 +0100 Subject: [PATCH 2/3] Improved JSON parsing error reporting, see #147 --- daemon/json.cpp | 24 ++++++++++++++++++------ 1 file changed, 18 insertions(+), 6 deletions(-) diff --git a/daemon/json.cpp b/daemon/json.cpp index 3f724db..f4fbde9 100644 --- a/daemon/json.cpp +++ b/daemon/json.cpp @@ -346,8 +346,12 @@ Config json_to_config_(std::istream& js, Config& config) { } catch (boost::property_tree::json_parser::json_parser_error& je) { throw std::runtime_error("error parsing JSON at line " + std::to_string(je.line()) + " :" + je.message()); - } catch (...) { - throw std::runtime_error("failed to convert a number"); + } catch (std::invalid_argument& e) { + throw std::runtime_error("error parsing JSON: cannot perform number conversion"); + } catch (std::out_of_range& e) { + throw std::runtime_error("error parsing JSON: number conversion out of range"); + } catch (std::exception& e) { + throw std::runtime_error("error parsing JSON: " + std::string(e.what())); } return config; } @@ -412,8 +416,12 @@ StreamSource json_to_source(const std::string& id, const std::string& json) { } catch (boost::property_tree::json_parser::json_parser_error& je) { throw std::runtime_error("error parsing JSON at line " + std::to_string(je.line()) + " :" + je.message()); - } catch (...) { - throw std::runtime_error("failed to convert a number"); + } catch (std::invalid_argument& e) { + throw std::runtime_error("error parsing JSON: cannot perform number conversion"); + } catch (std::out_of_range& e) { + throw std::runtime_error("error parsing JSON: number conversion out of range"); + } catch (std::exception& e) { + throw std::runtime_error("error parsing JSON: " + std::string(e.what())); } return source; } @@ -452,8 +460,12 @@ StreamSink json_to_sink(const std::string& id, const std::string& json) { } catch (boost::property_tree::json_parser::json_parser_error& je) { throw std::runtime_error("error parsing JSON at line " + std::to_string(je.line()) + " :" + je.message()); - } catch (...) { - throw std::runtime_error("failed to convert a number"); + } catch (std::invalid_argument& e) { + throw std::runtime_error("error parsing JSON: cannot perform number conversion"); + } catch (std::out_of_range& e) { + throw std::runtime_error("error parsing JSON: number conversion out of range"); + } catch (std::exception& e) { + throw std::runtime_error("error parsing JSON: " + std::string(e.what())); } return sink; } From 58d97c981c046e7779a6b5318a32b5c4af04d7b0 Mon Sep 17 00:00:00 2001 From: Andrea Bondavalli Date: Sun, 21 Jan 2024 10:29:40 +0100 Subject: [PATCH 3/3] Changed daemon version to v1.6.6 --- daemon/main.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/daemon/main.cpp b/daemon/main.cpp index 96c8b44..a14466d 100644 --- a/daemon/main.cpp +++ b/daemon/main.cpp @@ -39,7 +39,7 @@ namespace po = boost::program_options; namespace postyle = boost::program_options::command_line_style; namespace logging = boost::log; -static const std::string version("bondagit-1.6.5"); +static const std::string version("bondagit-1.6.6"); static std::atomic terminate = false; void termination_handler(int signum) {