summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2021-03-24 10:58:38 +0100
committerCarlos Garcia Campos <cgarcia@igalia.com>2021-03-26 09:32:41 +0100
commitedb8822af10f86deadbdc714e1a73cbaddea300a (patch)
treed8c81db753f4df70b0c32447854b297ee5579cf8
parentcc201d051c3cbdcda3c1fe89bb49f0908e1289fd (diff)
downloadlibsoup-edb8822af10f86deadbdc714e1a73cbaddea300a.tar.gz
server: rename soup_message_body_free as soup_message_body_unref
And copy() as ref() that is now public.
-rw-r--r--docs/reference/libsoup-3.0-sections.txt3
-rw-r--r--libsoup/server/soup-message-body.c25
-rw-r--r--libsoup/server/soup-message-body.h11
-rw-r--r--libsoup/server/soup-server-message.c4
4 files changed, 27 insertions, 16 deletions
diff --git a/docs/reference/libsoup-3.0-sections.txt b/docs/reference/libsoup-3.0-sections.txt
index 0e963653..cb5824d6 100644
--- a/docs/reference/libsoup-3.0-sections.txt
+++ b/docs/reference/libsoup-3.0-sections.txt
@@ -176,7 +176,8 @@ SoupMemoryUse
<SUBSECTION>
SoupMessageBody
soup_message_body_new
-soup_message_body_free
+soup_message_body_ref
+soup_message_body_unref
<SUBSECTION>
soup_message_body_set_accumulate
soup_message_body_get_accumulate
diff --git a/libsoup/server/soup-message-body.c b/libsoup/server/soup-message-body.c
index 28ef1bf3..ba451fd8 100644
--- a/libsoup/server/soup-message-body.c
+++ b/libsoup/server/soup-message-body.c
@@ -387,8 +387,16 @@ soup_message_body_wrote_chunk (SoupMessageBody *body, GBytes *chunk)
g_bytes_unref (chunk2);
}
-static SoupMessageBody *
-soup_message_body_copy (SoupMessageBody *body)
+/**
+ * soup_message_body_ref:
+ * @body: a #SoupMessageBody
+ *
+ * Atomically increments the reference count of @body by one.
+ *
+ * Returns: the passed in #SoupMessageBody
+ */
+SoupMessageBody *
+soup_message_body_ref (SoupMessageBody *body)
{
g_atomic_rc_box_acquire (body);
@@ -396,16 +404,17 @@ soup_message_body_copy (SoupMessageBody *body)
}
/**
- * soup_message_body_free:
+ * soup_message_body_unref:
* @body: a #SoupMessageBody
*
- * Frees @body. You will not normally need to use this, as
- * #SoupMessage frees its associated message bodies automatically.
- **/
+ * Atomically decrements the reference count of @body by one.
+ * When the reference count reaches zero, the resources allocated by
+ * @body are freed
+ */
void
-soup_message_body_free (SoupMessageBody *body)
+soup_message_body_unref (SoupMessageBody *body)
{
g_atomic_rc_box_release_full (body, (GDestroyNotify)soup_message_body_truncate);
}
-G_DEFINE_BOXED_TYPE (SoupMessageBody, soup_message_body, soup_message_body_copy, soup_message_body_free)
+G_DEFINE_BOXED_TYPE (SoupMessageBody, soup_message_body, soup_message_body_ref, soup_message_body_unref)
diff --git a/libsoup/server/soup-message-body.h b/libsoup/server/soup-message-body.h
index 5894f0bd..baaf8c5c 100644
--- a/libsoup/server/soup-message-body.h
+++ b/libsoup/server/soup-message-body.h
@@ -28,6 +28,12 @@ SOUP_AVAILABLE_IN_ALL
SoupMessageBody *soup_message_body_new (void);
SOUP_AVAILABLE_IN_ALL
+SoupMessageBody *soup_message_body_ref (SoupMessageBody *body);
+
+SOUP_AVAILABLE_IN_ALL
+void soup_message_body_unref (SoupMessageBody *body);
+
+SOUP_AVAILABLE_IN_ALL
void soup_message_body_set_accumulate(SoupMessageBody *body,
gboolean accumulate);
SOUP_AVAILABLE_IN_ALL
@@ -64,9 +70,4 @@ SOUP_AVAILABLE_IN_ALL
void soup_message_body_wrote_chunk (SoupMessageBody *body,
GBytes *chunk);
-SOUP_AVAILABLE_IN_ALL
-void soup_message_body_free (SoupMessageBody *body);
-
-G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageBody, soup_message_body_free)
-
G_END_DECLS
diff --git a/libsoup/server/soup-server-message.c b/libsoup/server/soup-server-message.c
index 40f92c7e..22311c5b 100644
--- a/libsoup/server/soup-server-message.c
+++ b/libsoup/server/soup-server-message.c
@@ -130,9 +130,9 @@ soup_server_message_finalize (GObject *object)
g_clear_pointer (&msg->uri, g_uri_unref);
g_free (msg->reason_phrase);
- soup_message_body_free (msg->request_body);
+ soup_message_body_unref (msg->request_body);
soup_message_headers_free (msg->request_headers);
- soup_message_body_free (msg->response_body);
+ soup_message_body_unref (msg->response_body);
soup_message_headers_free (msg->response_headers);
G_OBJECT_CLASS (soup_server_message_parent_class)->finalize (object);