libpurple/protocols/facebook/data.c

changeset 41839
143c68ca625d
parent 41728
e9b96ef5ea38
child 41879
6009bf441ef5
--- a/libpurple/protocols/facebook/data.c	Wed Oct 26 02:06:39 2022 -0500
+++ b/libpurple/protocols/facebook/data.c	Wed Oct 26 02:07:31 2022 -0500
@@ -24,6 +24,7 @@
 
 #include <purple.h>
 #include "libpurple/glibcompat.h"
+#include "libpurple/soupcompat.h"
 
 #include "api.h"
 #include "data.h"
@@ -486,16 +487,21 @@
 }
 
 static void
-fb_data_image_cb(G_GNUC_UNUSED SoupSession *session, SoupMessage *res,
-                 gpointer data)
-{
-	FbDataImage *img = data;
+fb_data_image_cb(GObject *source, GAsyncResult *result, gpointer data) {
+	SoupMessage *msg = data;
+	FbDataImage *img = g_object_get_data(G_OBJECT(msg), "facebook-data-image");
 	GError *err = NULL;
 
-	fb_http_error_chk(res, &err);
+	if(fb_http_error_chk(msg, &err)) {
+		GBytes *bytes = NULL;
 
-	img->image = (guint8 *)res->response_body->data;
-	img->size = res->response_body->length;
+		bytes = soup_session_send_and_read_finish(SOUP_SESSION(source),
+		                                          result, &err);
+		if(bytes != NULL) {
+			img->image = g_bytes_unref_to_data(bytes, &img->size);
+		}
+	}
+
 	img->func(img, err);
 
 	if (G_LIKELY(err == NULL)) {
@@ -541,8 +547,10 @@
 		url = fb_data_image_get_url(img);
 
 		msg = soup_message_new("GET", url);
+		g_object_set_data(G_OBJECT(msg), "facebook-data-image", img);
 		// purple_http_request_set_max_len(req, FB_DATA_ICON_SIZE_MAX);
-		soup_session_queue_message(fata->cons, msg, fb_data_image_cb, img);
+		soup_session_send_and_read_async(fata->cons, msg, G_PRIORITY_DEFAULT,
+		                                 NULL, fb_data_image_cb, msg);
 
 		if (++active >= FB_DATA_ICON_MAX) {
 			break;

mercurial