Fixed non-forking mode of Util::startInput, added more debug messages.

This commit is contained in:
Thulinma 2014-10-03 16:49:38 +02:00
parent 96a7205b39
commit bd5ba9a1f3

View file

@ -155,6 +155,7 @@ bool Util::startInput(std::string streamname, std::string filename, bool forkFir
unsigned int opt_size = optional.getSize(); unsigned int opt_size = optional.getSize();
for (unsigned int i = 0; i < opt_size; ++i){ for (unsigned int i = 0; i < opt_size; ++i){
std::string opt = optional.getIndiceName(i); std::string opt = optional.getIndiceName(i);
DEBUG_MSG(DLVL_VERYHIGH, "Checking optional %u: %s", i, opt.c_str());
if (stream_cfg.getMember(opt)){ if (stream_cfg.getMember(opt)){
str_args[optional.getIndice(i).getMember("option").asString()] = stream_cfg.getMember(opt).asString(); str_args[optional.getIndice(i).getMember("option").asString()] = stream_cfg.getMember(opt).asString();
} }
@ -163,7 +164,7 @@ bool Util::startInput(std::string streamname, std::string filename, bool forkFir
//finally, unlock the config semaphore //finally, unlock the config semaphore
configLock.post(); configLock.post();
INFO_MSG("Starting %s -p -s %s %s", player_bin.c_str(), streamname.c_str(), filename.c_str()); INFO_MSG("Starting %s -s %s %s", player_bin.c_str(), streamname.c_str(), filename.c_str());
char * argv[30] = {(char *)player_bin.c_str(), (char *)"-s", (char *)streamname.c_str(), (char *)filename.c_str()}; char * argv[30] = {(char *)player_bin.c_str(), (char *)"-s", (char *)streamname.c_str(), (char *)filename.c_str()};
int argNum = 3; int argNum = 3;
std::string debugLvl; std::string debugLvl;
@ -178,15 +179,20 @@ bool Util::startInput(std::string streamname, std::string filename, bool forkFir
} }
argv[++argNum] = (char *)0; argv[++argNum] = (char *)0;
int pid = 1; int pid = 0;
if (forkFirst){ if (forkFirst){
DEBUG_MSG(DLVL_DONTEVEN, "Forking");
pid = fork(); pid = fork();
if (pid == -1) { if (pid == -1) {
FAIL_MSG("Forking process for stream %s failed: %s", streamname.c_str(), strerror(errno)); FAIL_MSG("Forking process for stream %s failed: %s", streamname.c_str(), strerror(errno));
return false; return false;
} }
}else{
DEBUG_MSG(DLVL_DONTEVEN, "Not forking");
} }
if (pid == 0){ if (pid == 0){
DEBUG_MSG(DLVL_DONTEVEN, "execvp");
execvp(argv[0], argv); execvp(argv[0], argv);
FAIL_MSG("Starting process %s for stream %s failed: %s", argv[0], streamname.c_str(), strerror(errno)); FAIL_MSG("Starting process %s for stream %s failed: %s", argv[0], streamname.c_str(), strerror(errno));
_exit(42); _exit(42);