summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorAnton Luka Šijanec <anton@sijanec.eu>2022-02-16 07:39:17 +0100
committerAnton Luka Šijanec <anton@sijanec.eu>2022-02-16 07:39:17 +0100
commit2b43ca3a6e570f9c622c1607c284db609115f96e (patch)
tree37208040adbff34c934973dcc6164b2584aa5f7f
parentzunanje_delo (diff)
downloaddiscord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar.gz
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar.bz2
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar.lz
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar.xz
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.tar.zst
discord.c-2b43ca3a6e570f9c622c1607c284db609115f96e.zip
-rw-r--r--src/api.c17
1 files changed, 16 insertions, 1 deletions
diff --git a/src/api.c b/src/api.c
index 7a48045..0edbcdb 100644
--- a/src/api.c
+++ b/src/api.c
@@ -193,8 +193,23 @@ static int dc_lws_cb (struct lws * wsi, enum lws_callback_reasons rs, void * us,
fprintf(stdout, "%.*s", len, (const unsigned char *) in);
char * serialized = dc_json(pass->json, in, len);
while (serialized) {
-
serialized = dc_json(handler, NULL, 0);
+ cJSON json = cJSON_Parse(serialized);
+ pass->api_io.client->last_packet
+ = cJSON_GetNumberValue(cJSON_GetObjectItem(json, "s"));
+ switch (cJSON_GetNumberValue(cJSON_GetObjectItem(json, "op"))) {
+ case DC_PING:
+ client->last_ping = 0;
+ dc_handle_ping(pass->api_io, NULL);
+ default:
+ break;
+ }
+ double pi;
+ if ((pi = cJSON_GetNumberValue(cJSON_GetObjectItem2(json,
+ "d", "heartbeat_interval")) != NAN))
+ pass->api_io.client->ping_interval = pi;
+ cJSON_Delete(json);
+ json = NULL;
}
break;
case LWS_CALLBACK_CLIENT_WRITEABLE: /* invoke w/ lws_callback_on_writeable(wsi)4ws */