sys_net/NP: set some init dependencies

Ensure finalization order of network threads.
This should prevent some crashes.
This commit is contained in:
Nekotekina 2021-08-05 08:07:18 +03:00
parent 064fc81697
commit 86d2316089
4 changed files with 15 additions and 0 deletions

View file

@ -1217,6 +1217,12 @@ lv2_socket::~lv2_socket()
}
}
extern void need_network()
{
g_fxo->need<network_context>();
g_fxo->need<named_thread<tcp_timeout_monitor>>();
}
error_code sys_net_bnet_accept(ppu_thread& ppu, s32 s, vm::ptr<sys_net_sockaddr> addr, vm::ptr<u32> paddrlen)
{
ppu.state += cpu_flag::wait;

View file

@ -42,6 +42,8 @@ LOG_CHANNEL(nph_log, "NPHandler");
np_handler::np_handler()
{
g_fxo->need<named_thread<signaling_handler>>();
g_cfg_rpcn.load();
is_connected = (g_cfg.net.net_active == np_internet_status::enabled);

View file

@ -16,6 +16,7 @@ LOG_CHANNEL(sign_log, "Signaling");
std::vector<std::pair<std::pair<u32, u16>, std::vector<u8>>> get_sign_msgs();
s32 send_packet_from_p2p_port(const std::vector<u8>& data, const sockaddr_in& addr);
void need_network();
template <>
void fmt_class_string<SignalingCommand>::format(std::string& out, u64 arg)
@ -37,6 +38,11 @@ void fmt_class_string<SignalingCommand>::format(std::string& out, u64 arg)
});
}
signaling_handler::signaling_handler()
{
need_network();
}
/////////////////////////////
//// SIGNALING CALLBACKS ////
/////////////////////////////

View file

@ -48,6 +48,7 @@ enum SignalingCommand : u32
class signaling_handler
{
public:
signaling_handler();
void operator()();
void wake_up();
signaling_handler& operator=(thread_state);