Merge pull request #118 from HomerSp/fix-network-drop-crash
Properly catch exceptions in stream broadcast handlers
This commit is contained in:
@@ -963,6 +963,7 @@ void videoBroadcastThread(udp::socket &sock) {
|
||||
fec_blocks[0] = payload;
|
||||
}
|
||||
|
||||
try {
|
||||
auto blockIndex = 0;
|
||||
std::for_each(fec_blocks_begin, fec_blocks_end, [&](std::string_view ¤t_payload) {
|
||||
auto packets = (current_payload.size() + (blocksize - 1)) / blocksize;
|
||||
@@ -1021,6 +1022,11 @@ void videoBroadcastThread(udp::socket &sock) {
|
||||
|
||||
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);
|
||||
}
|
||||
@@ -1077,6 +1083,7 @@ void audioBroadcastThread(udp::socket &sock) {
|
||||
auto &shards_p = session->audio.shards_p;
|
||||
|
||||
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);
|
||||
|
||||
|
||||
@@ -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);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user