mimikakimemo

自分用メモ。

放送休止中に 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);

        // 録画時間の基準開始時間