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.
This commit is contained in:
Roman Sivriver
2020-12-11 10:10:08 -05:00
committed by Jim
parent 64164a1523
commit 7029304b32

View File

@@ -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;
}