[libsoup] forms: stop using SoupMessageBody in soup_multipart_to_message



commit 65833e0498f7993047a200801aec8a6cf93ade5d
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Tue Nov 3 17:22:56 2020 +0100

    forms: stop using SoupMessageBody in soup_multipart_to_message

 libsoup/soup-multipart.c | 24 ++++++++----------------
 1 file changed, 8 insertions(+), 16 deletions(-)
---
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
index da307331..b0f862bc 100644
--- a/libsoup/soup-multipart.c
+++ b/libsoup/soup-multipart.c
@@ -400,12 +400,10 @@ soup_multipart_to_message (SoupMultipart      *multipart,
                           GBytes            **dest_body)
 {
        SoupMessageHeaders *part_headers;
-       SoupMessageBody *body;
        GBytes *part_body;
        SoupMessageHeadersIter iter;
        const char *name, *value;
        GString *str;
-       GBytes *buffer;
        GHashTable *params;
        guint i;
 
@@ -416,13 +414,14 @@ soup_multipart_to_message (SoupMultipart      *multipart,
                                               params);
        g_hash_table_destroy (params);
 
-       body = soup_message_body_new ();
+       str = g_string_new (NULL);
 
        for (i = 0; i < multipart->bodies->len; i++) {
                part_headers = multipart->headers->pdata[i];
                part_body = multipart->bodies->pdata[i];
 
-               str = g_string_new (i == 0 ? NULL : "\r\n");
+               if (i > 0)
+                       g_string_append (str, "\r\n");
                g_string_append (str, "--");
                g_string_append (str, multipart->boundary);
                g_string_append (str, "\r\n");
@@ -430,28 +429,21 @@ soup_multipart_to_message (SoupMultipart      *multipart,
                while (soup_message_headers_iter_next (&iter, &name, &value))
                        g_string_append_printf (str, "%s: %s\r\n", name, value);
                g_string_append (str, "\r\n");
-
-                buffer = g_string_free_to_bytes (str);
-                soup_message_body_append_bytes (body, buffer);
-                g_bytes_unref (buffer);
-
-               soup_message_body_append_bytes (body, part_body);
+               g_string_append_len (str,
+                                    g_bytes_get_data (part_body, NULL),
+                                    g_bytes_get_size (part_body));
        }
 
-       str = g_string_new ("\r\n--");
+       g_string_append (str, "\r\n--");
        g_string_append (str, multipart->boundary);
        g_string_append (str, "--\r\n");
-       buffer = g_string_free_to_bytes (str);
-       soup_message_body_append_bytes (body, buffer);
-       g_bytes_unref (buffer);
 
        /* (The "\r\n" after the close-delimiter seems wrong according
         * to my reading of RFCs 2046 and 2616, but that's what
         * everyone else does.)
         */
 
-       *dest_body = soup_message_body_flatten (body);
-       soup_message_body_free (body);
+       *dest_body = g_string_free_to_bytes (str);
 }
 
 /**


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]