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 _params, bool nonblock, const std::string &_direction){ // We always create a server as listening - std::map 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 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 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 arguments; + server_socket = Socket::SRTServer(conf.getInteger("port"), conf.getString("interface"), arguments, false, "output"); } if (!server_socket.connected()){ DEVEL_MSG("Failure to open socket");