(Netplay) Disable netplay on init failure (#13479)

* (Netplay) Disable netplay on init failure

Make sure netplay is disabled and properly deinitialized after an initialization failure.

* missing comma
This commit is contained in:
Cthulhu-throwaway 2022-01-11 09:50:09 -03:00 committed by GitHub
parent 0a1ffcd4d5
commit 4dda10b86d
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

View File

@ -8330,17 +8330,11 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
const char *mitm = NULL;
if (!net_st->netplay_enabled)
{
net_st->netplay_client_deferred = false;
return false;
}
goto failure;
core_set_default_callbacks(&cbs);
if (!core_set_netplay_callbacks())
{
net_st->netplay_client_deferred = false;
return false;
}
goto failure;
/* Map the core's quirks to our quirks */
serialization_quirks = core_serialization_quirks();
@ -8348,7 +8342,6 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
/* Quirks we don't support! Just disable everything. */
if (serialization_quirks & ~((uint64_t) NETPLAY_QUIRK_MAP_UNDERSTOOD))
quirks |= NETPLAY_QUIRK_NO_SAVESTATES;
if (serialization_quirks & NETPLAY_QUIRK_MAP_NO_SAVESTATES)
quirks |= NETPLAY_QUIRK_NO_SAVESTATES;
if (serialization_quirks & NETPLAY_QUIRK_MAP_NO_TRANSMISSION)
@ -8372,6 +8365,7 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
if (settings->bools.netplay_use_mitm_server)
{
const char *mitm_handle = settings->arrays.netplay_mitm_server;
if (netplay_mitm_query(mitm_handle))
{
/* We want to cache the MITM server handle in order to
@ -8402,11 +8396,16 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
}
}
net_st->netplay_client_deferred = false;
#ifdef HAVE_NETPLAYDISCOVERY
net_st->lan_ad_server_fd = -1;
#endif
net_st->netplay_client_deferred = false;
net_st->chat = calloc(1, sizeof(*net_st->chat));
if (!net_st->chat)
goto failure;
net_st->chat->message_slots = ARRAY_SIZE(net_st->chat->messages);
net_st->data = netplay_new(
server, mitm, port, mitm_session,
@ -8421,21 +8420,8 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
#endif
settings->paths.username,
quirks);
if (!net_st->data)
{
RARCH_ERR("[Netplay] %s\n", msg_hash_to_str(MSG_NETPLAY_FAILED));
runloop_msg_queue_push(
msg_hash_to_str(MSG_NETPLAY_FAILED),
0, 180, false,
NULL, MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
return false;
}
net_st->chat = calloc(1, sizeof(*net_st->chat));
if (!net_st->chat)
return false;
net_st->chat->message_slots = ARRAY_SIZE(net_st->chat->messages);
goto failure;
net_st->reannounce = 900;
net_st->reping = -1;
@ -8452,6 +8438,20 @@ bool init_netplay(const char *server, unsigned port, const char *mitm_session)
}
return true;
failure:
net_st->netplay_enabled = false;
net_st->netplay_is_client = false;
net_st->netplay_client_deferred = false;
deinit_netplay();
RARCH_ERR("[Netplay] %s\n", msg_hash_to_str(MSG_NETPLAY_FAILED));
runloop_msg_queue_push(
msg_hash_to_str(MSG_NETPLAY_FAILED), 0, 180, false, NULL,
MESSAGE_QUEUE_ICON_DEFAULT, MESSAGE_QUEUE_CATEGORY_INFO);
return false;
}
/**