diff options
Diffstat (limited to 'remux/extern.c')
-rw-r--r-- | remux/extern.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/remux/extern.c b/remux/extern.c index ce76883..cf766d3 100644 --- a/remux/extern.c +++ b/remux/extern.c @@ -151,7 +151,10 @@ cTSExt::cTSExt(cRingBufferLinear *ResultBuffer, const cServerConnection *Connect // look for section parameters: /path;param1=value1;param2=value2/ std::string::size_type begin, end; - std::string path = Connection->Headers().at("PATH_INFO"); + const static std::string PATH_INFO("PATH_INFO"); + + tStrStrMap::const_iterator it_pathinfo = Connection->Headers().find(PATH_INFO); + const std::string& path = it_pathinfo == Connection->Headers().end() ? "/" : it_pathinfo->second; begin = path.find(';', 0); begin = path.find_first_not_of(';', begin); end = path.find_first_of(";/", begin); @@ -188,6 +191,11 @@ cTSExt::cTSExt(cRingBufferLinear *ResultBuffer, const cServerConnection *Connect if (setpgid(0, 0) == -1) esyslog("streamdev-server: externremux setpgid failed: %m"); + if (access(opt_remux, X_OK) == -1) { + esyslog("streamdev-server %s: %m", opt_remux); + _exit(-1); + } + if (execle("/bin/sh", "sh", "-c", opt_remux, NULL, env) == -1) { esyslog("streamdev-server: externremux script '%s' execution failed: %m", opt_remux); _exit(-1); |