diff options
author | Frank Schmirler <vdr@schmirler.de> | 2010-12-02 09:57:17 +0100 |
---|---|---|
committer | Frank Schmirler <vdr@schmirler.de> | 2010-12-02 09:57:17 +0100 |
commit | 2ec54f75051001accc03c32b42df70cd4a19febd (patch) | |
tree | 836d96c9a4688a01745719787a7a0e83804356f8 /remux/extern.c | |
parent | e0a00f90aece9cfc54f3d5a1d9098fa29d9dc468 (diff) | |
download | vdr-plugin-streamdev-2ec54f75051001accc03c32b42df70cd4a19febd.tar.gz vdr-plugin-streamdev-2ec54f75051001accc03c32b42df70cd4a19febd.tar.bz2 |
Snapshot 2010-09-15
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); |