Properly catch exceptions in stream broadcast handlers to prevent unhandled exception crash/termination.
This commit is contained in:
@@ -963,6 +963,7 @@ void videoBroadcastThread(udp::socket &sock) {
|
|||||||
fec_blocks[0] = payload;
|
fec_blocks[0] = payload;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
try {
|
||||||
auto blockIndex = 0;
|
auto blockIndex = 0;
|
||||||
std::for_each(fec_blocks_begin, fec_blocks_end, [&](std::string_view ¤t_payload) {
|
std::for_each(fec_blocks_begin, fec_blocks_end, [&](std::string_view ¤t_payload) {
|
||||||
auto packets = (current_payload.size() + (blocksize - 1)) / blocksize;
|
auto packets = (current_payload.size() + (blocksize - 1)) / blocksize;
|
||||||
@@ -1021,6 +1022,11 @@ void videoBroadcastThread(udp::socket &sock) {
|
|||||||
|
|
||||||
session->video.lowseq = lowseq;
|
session->video.lowseq = lowseq;
|
||||||
}
|
}
|
||||||
|
catch(const std::exception &e) {
|
||||||
|
BOOST_LOG(error) << "Broadcast video failed "sv << e.what();
|
||||||
|
std::this_thread::sleep_for(100ms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
shutdown_event->raise(true);
|
shutdown_event->raise(true);
|
||||||
}
|
}
|
||||||
@@ -1077,6 +1083,7 @@ void audioBroadcastThread(udp::socket &sock) {
|
|||||||
auto &shards_p = session->audio.shards_p;
|
auto &shards_p = session->audio.shards_p;
|
||||||
|
|
||||||
std::copy_n(audio_packet->payload(), bytes, shards_p[sequenceNumber % RTPA_DATA_SHARDS]);
|
std::copy_n(audio_packet->payload(), bytes, shards_p[sequenceNumber % RTPA_DATA_SHARDS]);
|
||||||
|
try {
|
||||||
sock.send_to(asio::buffer((char *)audio_packet.get(), sizeof(audio_packet_raw_t) + bytes), session->audio.peer);
|
sock.send_to(asio::buffer((char *)audio_packet.get(), sizeof(audio_packet_raw_t) + bytes), session->audio.peer);
|
||||||
|
|
||||||
|
|
||||||
@@ -1102,6 +1109,11 @@ void audioBroadcastThread(udp::socket &sock) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
catch(const std::exception &e) {
|
||||||
|
BOOST_LOG(error) << "Broadcast audio failed "sv << e.what();
|
||||||
|
std::this_thread::sleep_for(100ms);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
shutdown_event->raise(true);
|
shutdown_event->raise(true);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user