diff options
author | Eion Robb <eion@robbmob.com> | 2017-04-17 10:46:30 +0300 |
---|---|---|
committer | Eion Robb <eion@robbmob.com> | 2017-04-17 10:46:30 +0300 |
commit | e95356fe75ba1b67b266690a12caf105585e412b (patch) | |
tree | 6adddf4bc42fa1899b5d7df58f09e5acd066d365 /skypeweb/skypeweb_connection.c | |
parent | 1dba378157bc5a1cea5441a2e5ff1bb54b5f72b9 (diff) |
Multiple fixes for issue #541
* Parse 404 responses as they have useful data
* Attach to an endpoint before setting online status
* Allow specifying NULL as an `end` param for get_chunk()
Diffstat (limited to 'skypeweb/skypeweb_connection.c')
-rw-r--r-- | skypeweb/skypeweb_connection.c | 42 |
1 files changed, 19 insertions, 23 deletions
diff --git a/skypeweb/skypeweb_connection.c b/skypeweb/skypeweb_connection.c index c216ad0..4f58542 100644 --- a/skypeweb/skypeweb_connection.c +++ b/skypeweb/skypeweb_connection.c @@ -34,34 +34,30 @@ skypeweb_post_or_get_cb(PurpleHttpConnection *http_conn, PurpleHttpResponse *res const gchar *data; gsize len; - if (purple_http_response_is_successful(response)) { - data = purple_http_response_get_data(response, &len); - - if (conn->callback != NULL) { - if (!len) + data = purple_http_response_get_data(response, &len); + + if (conn->callback != NULL) { + if (!len) + { + purple_debug_info("skypeweb", "No data in response\n"); + conn->callback(conn->sa, NULL, conn->user_data); + } else { + JsonParser *parser = json_parser_new(); + if (!json_parser_load_from_data(parser, data, len, NULL)) { - purple_debug_info("skypeweb", "No data in response\n"); - conn->callback(conn->sa, NULL, conn->user_data); - } else { - JsonParser *parser = json_parser_new(); - if (!json_parser_load_from_data(parser, data, len, NULL)) - { - if (conn->error_callback != NULL) { - conn->error_callback(conn->sa, data, len, conn->user_data); - } else { - purple_debug_error("skypeweb", "Error parsing response: %s\n", data); - } + if (conn->error_callback != NULL) { + conn->error_callback(conn->sa, data, len, conn->user_data); } else { - JsonNode *root = json_parser_get_root(parser); - - purple_debug_info("skypeweb", "executing callback for %s\n", conn->url); - conn->callback(conn->sa, root, conn->user_data); + purple_debug_error("skypeweb", "Error parsing response: %s\n", data); } - g_object_unref(parser); + } else { + JsonNode *root = json_parser_get_root(parser); + + purple_debug_info("skypeweb", "executing callback for %s\n", conn->url); + conn->callback(conn->sa, root, conn->user_data); } + g_object_unref(parser); } - } else { - purple_debug_error("skypeweb", "error in response: %s\n", purple_http_response_get_error(response)); } skypeweb_destroy_connection(conn); |