瀏覽代碼

ftl-stream: Fix reconnect loop on FTL ingest disconnect

When connection to FTL ingest is lost, ftl_event() calls
obs_output_signal_stop() to trigger a reconnect. However, during the
reconnect delay, send_thread is still waiting on send_sem semaphore.
After the delay, ftl_stream_start() is called, which in turn resets
the semaphore and creates a new send_thread. Old send_thread now exits
the loop and triggers another reconnect and the whole process repeats
again. The fix resets the semaphore in ftl_event() so the old
send_thread exits immediately.
Roman Sivriver 5 年之前
父節點
當前提交
7029304b32
共有 1 個文件被更改,包括 1 次插入0 次删除
  1. 1 0
      plugins/obs-outputs/ftl-stream.c

+ 1 - 0
plugins/obs-outputs/ftl-stream.c

@@ -886,6 +886,7 @@ static enum ret_type ftl_event(struct ftl_stream *stream,
 	//tell OBS and it will trigger a reconnection
 	blog(LOG_WARNING, "Reconnecting to Ingest");
 	obs_output_signal_stop(stream->output, OBS_OUTPUT_DISCONNECTED);
+	reset_semaphore(stream);
 	return RET_EXIT;
 }