放送休止中に recfsusb2n で受信すると動きっぱなしになる問題
先日 epgrec を導入したが、たびたび番組表の取得や予約録画に失敗していた。プロセスを見てみると、深夜に getepg.php から呼ばれた recfsusb2n が動きっぱなしになっている。ネットの情報を調べてみたところ、recfsusb2n は放送休止中の局を選局するとそのまま固まってしまうらしい。
そのような場合にタイムアウトさせるようなパッチがあったので、fsusb2n.cppにこれを適用して改めてコンパイルした。
@@ -173,8 +173,13 @@ sigaction(SIGINT, &sa, NULL); sigaction(SIGTERM, &sa, NULL); + int timeout = 10; do { sleep(1); + if (--timeout <= 0) { + log << "GetSequenceState timeout." << std::endl; + exit(1); + } } while(pDev->DeMod_GetSequenceState() < 8 && !caughtSignal); // 録画時間の基準開始時間