eion/purple-hangouts

Make reconnections slightly more reliable
draft
2016-11-14, Eion Robb
a785489cc502
Parents f5ec16d0c65d
Children 0801b8b4a328
Make reconnections slightly more reliable
--- a/hangouts_connection.c Sat Nov 12 22:03:09 2016 +1300
+++ b/hangouts_connection.c Mon Nov 14 22:29:43 2016 +1300
@@ -380,6 +380,7 @@
JsonNode *node;
HangoutsAccount *ha = user_data;
const gchar *res_raw;
+ gchar *json_start;
size_t res_len;
gchar *gsid;
gchar *sid;
@@ -390,9 +391,14 @@
}
res_raw = purple_http_response_get_data(response, &res_len);
- res_raw = g_strstr_len(res_raw, res_len, "\n");
- res_raw++;
- node = json_decode(res_raw, -1);
+ json_start = g_strstr_len(res_raw, res_len, "\n");
+ if (json_start == NULL) {
+ purple_connection_error(ha->pc, PURPLE_CONNECTION_ERROR_NETWORK_ERROR, "Blank maps response");
+ return;
+ }
+ *json_start = '\0';
+ json_start++;
+ node = json_decode(json_start, atoi(res_raw));
sid = hangouts_json_path_query_string(node, "$[0][1][1]", NULL);
gsid = hangouts_json_path_query_string(node, "$[1][1][0].gsid", NULL);