mirror of https://github.com/OpenRCT2/OpenRCT2.git
fix master server communication
This commit is contained in:
parent
0b9882b96f
commit
d2aa736492
|
@ -69,6 +69,10 @@ http_json_response *http_request_json(const char *url)
|
|||
writeBuffer.length = 0;
|
||||
writeBuffer.capacity = 0;
|
||||
|
||||
curl_slist *headers = NULL;
|
||||
headers = curl_slist_append(headers, "Accept: application/json");
|
||||
|
||||
curl_easy_setopt(curl, CURLOPT_HTTPHEADER, headers);
|
||||
curl_easy_setopt(curl, CURLOPT_FOLLOWLOCATION, true);
|
||||
curl_easy_setopt(curl, CURLOPT_SSL_VERIFYPEER, true);
|
||||
curl_easy_setopt(curl, CURLOPT_CAINFO, "curl-ca-bundle.crt");
|
||||
|
|
|
@ -615,7 +615,7 @@ void Network::UpdateServer()
|
|||
|
||||
switch (advertise_status) {
|
||||
case ADVERTISE_STATUS_UNREGISTERED:
|
||||
if (SDL_TICKS_PASSED(SDL_GetTicks(), last_advertise_time + MASTER_SERVER_REGISTER_TIME)) {
|
||||
if (last_advertise_time == 0 || SDL_TICKS_PASSED(SDL_GetTicks(), last_advertise_time + MASTER_SERVER_REGISTER_TIME)) {
|
||||
AdvertiseRegister();
|
||||
}
|
||||
break;
|
||||
|
@ -856,7 +856,7 @@ void Network::AdvertiseRegister()
|
|||
// Send the registration request
|
||||
std::string url = GetMasterServerUrl()
|
||||
+ std::string("?command=register&port=") + std::to_string(listening_port)
|
||||
+ std::string("key=") + advertise_key;
|
||||
+ std::string("&key=") + advertise_key;
|
||||
http_request_json_async(url.c_str(), [](http_json_response *response) -> void {
|
||||
if (response == NULL) {
|
||||
log_warning("Unable to connect to master server");
|
||||
|
@ -892,8 +892,7 @@ void Network::AdvertiseHeartbeat()
|
|||
// Send the heartbeat request
|
||||
std::string url = GetMasterServerUrl()
|
||||
+ std::string("?command=heartbeat&token=") + advertise_token
|
||||
+ std::string("key=") + advertise_key
|
||||
+ std::string("players=") + std::to_string(network_get_num_players());
|
||||
+ std::string("&players=") + std::to_string(network_get_num_players());
|
||||
|
||||
// TODO send status data (e.g. players) via JSON body
|
||||
|
||||
|
|
|
@ -684,32 +684,39 @@ static void fetch_servers_callback(http_json_response* response)
|
|||
return;
|
||||
}
|
||||
|
||||
int count = json_array_size(response->root);
|
||||
int count = json_array_size(jsonServers);
|
||||
for (int i = 0; i < count; i++) {
|
||||
json_t *server = json_array_get(response->root, i);
|
||||
json_t *server = json_array_get(jsonServers, i);
|
||||
if (!json_is_object(server)) {
|
||||
continue;
|
||||
}
|
||||
|
||||
json_t *address = json_object_get(server, "address");
|
||||
json_t *port = json_object_get(server, "port");
|
||||
json_t *name = json_object_get(server, "name");
|
||||
json_t *description = json_object_get(server, "description");
|
||||
json_t *requiresPassword = json_object_get(server, "requiresPassword");
|
||||
json_t *version = json_object_get(server, "version");
|
||||
json_t *players = json_object_get(server, "players");
|
||||
json_t *maxplayers = json_object_get(server, "maxPlayers");
|
||||
json_t *description = json_object_get(server, "description");
|
||||
json_t *maxPlayers = json_object_get(server, "maxPlayers");
|
||||
json_t *ip = json_object_get(server, "ip");
|
||||
json_t *ip4 = json_object_get(ip, "v4");
|
||||
json_t *ip6 = json_object_get(ip, "v6");
|
||||
json_t *addressIp = json_array_get(ip4, 0);
|
||||
|
||||
char address[256];
|
||||
snprintf(address, sizeof(address), "%s:%d", json_string_value(addressIp), (int)json_integer_value(port));
|
||||
|
||||
SDL_LockMutex(_mutex);
|
||||
saved_server* newserver = add_saved_server((char*)json_string_value(address));
|
||||
saved_server* newserver = add_saved_server(address);
|
||||
SafeFree(newserver->name);
|
||||
SafeFree(newserver->description);
|
||||
SafeFree(newserver->version);
|
||||
newserver->name = _strdup(json_string_value(name));
|
||||
newserver->requiresPassword = json_boolean_value(requiresPassword);
|
||||
SafeFree(newserver->description);
|
||||
newserver->description = _strdup(json_string_value(description));
|
||||
SafeFree(newserver->version);
|
||||
newserver->version = _strdup(json_string_value(version));
|
||||
newserver->players = (uint8)json_integer_value(players);
|
||||
newserver->maxplayers = (uint8)json_integer_value(maxplayers);
|
||||
newserver->maxplayers = (uint8)json_integer_value(maxPlayers);
|
||||
SDL_UnlockMutex(_mutex);
|
||||
}
|
||||
http_request_json_dispose(response);
|
||||
|
|
Loading…
Reference in New Issue