summaryrefslogtreecommitdiff
path: root/remux/extern.c
diff options
context:
space:
mode:
Diffstat (limited to 'remux/extern.c')
-rw-r--r--remux/extern.c10
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);