From 0430a644dfcd0fcc0ea6494bdb8d431073b8361d Mon Sep 17 00:00:00 2001 From: Matthew James <matt@Matthews-MacBook-Pro.local> Date: Fri, 22 Jul 2022 00:44:28 +0800 Subject: [PATCH] Enable Parameters on TSSRT listener --- lib/socket_srt.cpp | 7 +++---- lib/socket_srt.h | 2 +- src/input/input_tssrt.cpp | 4 +++- src/output/output_tssrt.cpp | 3 ++- 4 files changed, 9 insertions(+), 7 deletions(-) diff --git a/lib/socket_srt.cpp b/lib/socket_srt.cpp index a01117db..3e03bce4 100644 --- a/lib/socket_srt.cpp +++ b/lib/socket_srt.cpp @@ -462,12 +462,11 @@ namespace Socket{ SRTServer::SRTServer(int fromSock){conn = SRTConnection(fromSock);} - SRTServer::SRTServer(int port, std::string hostname, bool nonblock, const std::string &_direction){ + SRTServer::SRTServer(int port, std::string hostname, std::map<std::string, std::string> _params, bool nonblock, const std::string &_direction){ // We always create a server as listening - std::map<std::string, std::string> listenMode; - listenMode["mode"] = "listener"; + _params["mode"] = "listener"; if (hostname == ""){hostname = "0.0.0.0";} - conn.connect(hostname, port, _direction, listenMode); + conn.connect(hostname, port, _direction, _params); conn.setBlocking(true); if (!conn){ ERROR_MSG("Unable to create socket"); diff --git a/lib/socket_srt.h b/lib/socket_srt.h index 5101d38d..07e947f8 100644 --- a/lib/socket_srt.h +++ b/lib/socket_srt.h @@ -97,7 +97,7 @@ namespace Socket{ public: SRTServer(); SRTServer(int existingSock); - SRTServer(int port, std::string hostname, bool nonblock = false, const std::string &_direction = "input"); + SRTServer(int port, std::string hostname, std::map<std::string, std::string> params, bool nonblock = false, const std::string &_direction = "input"); SRTConnection accept(bool nonblock = false, const std::string &direction = "input"); void setBlocking(bool blocking); bool connected() const; diff --git a/src/input/input_tssrt.cpp b/src/input/input_tssrt.cpp index 4a7adcef..d12f9cba 100644 --- a/src/input/input_tssrt.cpp +++ b/src/input/input_tssrt.cpp @@ -137,7 +137,9 @@ namespace Mist{ HTTP::URL u(source); INFO_MSG("Parsed url: %s", u.getUrl().c_str()); if (Socket::interpretSRTMode(u) == "listener"){ - sSock = Socket::SRTServer(u.getPort(), u.host, false); + std::map<std::string, std::string> arguments; + HTTP::parseVars(u.args, arguments); + sSock = Socket::SRTServer(u.getPort(), u.host, arguments, false); struct sigaction new_action; struct sigaction cur_action; new_action.sa_sigaction = signal_handler; diff --git a/src/output/output_tssrt.cpp b/src/output/output_tssrt.cpp index aa06189e..fb07b11e 100644 --- a/src/output/output_tssrt.cpp +++ b/src/output/output_tssrt.cpp @@ -434,7 +434,8 @@ int main(int argc, char *argv[]){ sigaction(SIGUSR1, &new_action, NULL); } if (conf.getInteger("port") && conf.getString("interface").size()){ - server_socket = Socket::SRTServer(conf.getInteger("port"), conf.getString("interface"), false, "output"); + std::map<std::string, std::string> arguments; + server_socket = Socket::SRTServer(conf.getInteger("port"), conf.getString("interface"), arguments, false, "output"); } if (!server_socket.connected()){ DEVEL_MSG("Failure to open socket");