/soc/2015/jgeboski/facebook: 1cbcea2165c1: facebook: ignore canc...
James Geboski <[email protected]>
| Newsgroups | gmane.comp.gnome.gaim.cvs |
|---|---|
| Message-ID | <[email protected]> |
Changeset: 1cbcea2165c172d578747555bb1b3c71b1f244c6 Author: James Geboski <[email protected]> Date: 2015-08-20 16:19 -0400 Branch: facebook URL: https://hg.pidgin.im/soc/2015/jgeboski/facebook/rev/1cbcea2165c1 Description: facebook: ignore canceling HTTP requests diffstat: libpurple/http.c | 7 +++++++ libpurple/http.h | 10 ++++++++++ libpurple/protocols/facebook/api.c | 5 +++++ libpurple/protocols/facebook/data.c | 5 +++++ 4 files changed, 27 insertions(+), 0 deletions(-) diffs (67 lines): diff --git a/libpurple/http.c b/libpurple/http.c --- a/libpurple/http.c +++ b/libpurple/http.c @@ -1755,6 +1755,13 @@ void purple_http_conn_cancel_all(PurpleC "related to gc=%p (it shouldn't happen)\n", gc); } +gboolean purple_http_conn_is_cancelling(PurpleHttpConnection *http_conn) +{ + if (http_conn == NULL) + return FALSE; + return http_conn->is_cancelling; +} + gboolean purple_http_conn_is_running(PurpleHttpConnection *http_conn) { if (http_conn == NULL) diff --git a/libpurple/http.h b/libpurple/http.h --- a/libpurple/http.h +++ b/libpurple/http.h @@ -222,6 +222,16 @@ void purple_http_conn_cancel(PurpleHttpC void purple_http_conn_cancel_all(PurpleConnection *gc); /** + * purple_http_conn_is_cancelling: + * @http_conn: The HTTP connection (may be invalid pointer). + * + * Checks, if provided HTTP request is cancelling. + * + * Returns: TRUE, if provided connection is currently cancelling. + */ +gboolean purple_http_conn_is_cancelling(PurpleHttpConnection *http_conn); + +/** * purple_http_conn_is_running: * @http_conn: The HTTP connection (may be invalid pointer). * diff --git a/libpurple/protocols/facebook/api.c b/libpurple/protocols/facebook/api.c --- a/libpurple/protocols/facebook/api.c +++ b/libpurple/protocols/facebook/api.c @@ -592,6 +592,11 @@ fb_api_http_chk(FbApi *api, PurpleHttpCo gint code; gsize size; + if (G_UNLIKELY(purple_http_conn_is_cancelling(con))) { + /* Ignore canceling HTTP requests */ + return FALSE; + } + msg = purple_http_response_get_error(res); code = purple_http_response_get_code(res); data = purple_http_response_get_data(res, &size); diff --git a/libpurple/protocols/facebook/data.c b/libpurple/protocols/facebook/data.c --- a/libpurple/protocols/facebook/data.c +++ b/libpurple/protocols/facebook/data.c @@ -530,6 +530,11 @@ fb_data_image_cb(PurpleHttpConnection *c FbDataImagePrivate *priv = img->priv; GError *err = NULL; + if (G_UNLIKELY(purple_http_conn_is_cancelling(con))) { + /* Ignore canceling HTTP requests */ + return; + } + fb_http_error_chk(res, &err); priv->image = (guint8*) purple_http_response_get_data(res, &priv->size); priv->func(img, err); _______________________________________________ Commits mailing list [email protected] https://pidgin.im/cgi-bin/mailman/listinfo/commits