summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Garcia Campos <cgarcia@igalia.com>2021-03-24 11:20:01 +0100
committerCarlos Garcia Campos <cgarcia@igalia.com>2021-03-26 09:33:42 +0100
commita5bf81707619237da32b2b2e471381a55e4b3d72 (patch)
tree21875d769400cc20f4419be457fd772d03946fc6
parentedb8822af10f86deadbdc714e1a73cbaddea300a (diff)
downloadlibsoup-carlosgc/clean-refcounted.tar.gz
Rename soup_message_headers_free as soup_message_headers_unrefcarlosgc/clean-refcounted
And soup_message_headers_copy as soup_message_headers_ref that is now public.
-rw-r--r--docs/reference/libsoup-3.0-sections.txt3
-rw-r--r--libsoup/cache/soup-cache.c4
-rw-r--r--libsoup/server/soup-server-io.c2
-rw-r--r--libsoup/server/soup-server-message.c4
-rw-r--r--libsoup/soup-message-headers.c24
-rw-r--r--libsoup/soup-message-headers.h7
-rw-r--r--libsoup/soup-message.c4
-rw-r--r--libsoup/soup-multipart-input-stream.c4
-rw-r--r--libsoup/soup-multipart.c2
-rw-r--r--tests/cache-test.c2
-rw-r--r--tests/header-parsing-test.c12
11 files changed, 41 insertions, 27 deletions
diff --git a/docs/reference/libsoup-3.0-sections.txt b/docs/reference/libsoup-3.0-sections.txt
index cb5824d6..1c3ecfca 100644
--- a/docs/reference/libsoup-3.0-sections.txt
+++ b/docs/reference/libsoup-3.0-sections.txt
@@ -100,7 +100,8 @@ SOUP_METHOD_UNLOCK
SoupMessageHeaders
SoupMessageHeadersType
soup_message_headers_new
-soup_message_headers_free
+soup_message_headers_ref
+soup_message_headers_unref
<SUBSECTION>
soup_message_headers_append
soup_message_headers_replace
diff --git a/libsoup/cache/soup-cache.c b/libsoup/cache/soup-cache.c
index 02d97974..f9303cec 100644
--- a/libsoup/cache/soup-cache.c
+++ b/libsoup/cache/soup-cache.c
@@ -285,7 +285,7 @@ static void
soup_cache_entry_free (SoupCacheEntry *entry)
{
g_free (entry->uri);
- g_clear_pointer (&entry->headers, soup_message_headers_free);
+ g_clear_pointer (&entry->headers, soup_message_headers_unref);
g_clear_object (&entry->cancellable);
g_slice_free (SoupCacheEntry, entry);
@@ -1610,7 +1610,7 @@ soup_cache_load (SoupCache *cache)
/* Check that we have headers */
soup_message_headers_iter_init (&soup_headers_iter, headers);
if (!soup_message_headers_iter_next (&soup_headers_iter, &header_key, &header_value)) {
- soup_message_headers_free (headers);
+ soup_message_headers_unref (headers);
continue;
}
diff --git a/libsoup/server/soup-server-io.c b/libsoup/server/soup-server-io.c
index 37b484ff..5cc240b1 100644
--- a/libsoup/server/soup-server-io.c
+++ b/libsoup/server/soup-server-io.c
@@ -256,7 +256,7 @@ handle_partial_get (SoupServerMessage *msg)
ranges[i].end - ranges[i].start + 1);
soup_multipart_append_part (multipart, part_headers,
part_body);
- soup_message_headers_free (part_headers);
+ soup_message_headers_unref (part_headers);
g_bytes_unref (part_body);
}
diff --git a/libsoup/server/soup-server-message.c b/libsoup/server/soup-server-message.c
index 22311c5b..d51f5bee 100644
--- a/libsoup/server/soup-server-message.c
+++ b/libsoup/server/soup-server-message.c
@@ -131,9 +131,9 @@ soup_server_message_finalize (GObject *object)
g_free (msg->reason_phrase);
soup_message_body_unref (msg->request_body);
- soup_message_headers_free (msg->request_headers);
+ soup_message_headers_unref (msg->request_headers);
soup_message_body_unref (msg->response_body);
- soup_message_headers_free (msg->response_headers);
+ soup_message_headers_unref (msg->response_headers);
G_OBJECT_CLASS (soup_server_message_parent_class)->finalize (object);
}
diff --git a/libsoup/soup-message-headers.c b/libsoup/soup-message-headers.c
index 81d53b8f..3abdb328 100644
--- a/libsoup/soup-message-headers.c
+++ b/libsoup/soup-message-headers.c
@@ -84,8 +84,16 @@ soup_message_headers_new (SoupMessageHeadersType type)
return hdrs;
}
-static SoupMessageHeaders *
-soup_message_headers_copy (SoupMessageHeaders *hdrs)
+/**
+ * soup_message_headers_ref:
+ * @hdrs: a #SoupMessageHeaders
+ *
+ * Atomically increments the reference count of @hdrs by one.
+ *
+ * Returns: the passed in #SoupMessageHeaders
+ */
+SoupMessageHeaders *
+soup_message_headers_ref (SoupMessageHeaders *hdrs)
{
g_atomic_rc_box_acquire (hdrs);
@@ -101,18 +109,20 @@ soup_message_headers_destroy (SoupMessageHeaders *hdrs)
}
/**
- * soup_message_headers_free:
+ * soup_message_headers_unref:
* @hdrs: a #SoupMessageHeaders
*
- * Frees @hdrs.
- **/
+ * Atomically decrements the reference count of @hdrs by one.
+ * When the reference count reaches zero, the resources allocated by
+ * @hdrs are freed
+ */
void
-soup_message_headers_free (SoupMessageHeaders *hdrs)
+soup_message_headers_unref (SoupMessageHeaders *hdrs)
{
g_atomic_rc_box_release_full (hdrs, (GDestroyNotify)soup_message_headers_destroy);
}
-G_DEFINE_BOXED_TYPE (SoupMessageHeaders, soup_message_headers, soup_message_headers_copy, soup_message_headers_free)
+G_DEFINE_BOXED_TYPE (SoupMessageHeaders, soup_message_headers, soup_message_headers_ref, soup_message_headers_unref)
/**
* soup_message_headers_get_headers_type:
diff --git a/libsoup/soup-message-headers.h b/libsoup/soup-message-headers.h
index 4348547f..a355a7bb 100644
--- a/libsoup/soup-message-headers.h
+++ b/libsoup/soup-message-headers.h
@@ -24,7 +24,10 @@ SOUP_AVAILABLE_IN_ALL
SoupMessageHeaders *soup_message_headers_new (SoupMessageHeadersType type);
SOUP_AVAILABLE_IN_ALL
-void soup_message_headers_free (SoupMessageHeaders *hdrs);
+SoupMessageHeaders *soup_message_headers_ref (SoupMessageHeaders *hdrs);
+
+SOUP_AVAILABLE_IN_ALL
+void soup_message_headers_unref (SoupMessageHeaders *hdrs);
SOUP_AVAILABLE_IN_ALL
void soup_message_headers_append (SoupMessageHeaders *hdrs,
@@ -169,6 +172,6 @@ void soup_message_headers_set_content_disposition (SoupMessageHeaders *hdrs
const char *disposition,
GHashTable *params);
-G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageHeaders, soup_message_headers_free)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageHeaders, soup_message_headers_unref)
G_END_DECLS
diff --git a/libsoup/soup-message.c b/libsoup/soup-message.c
index ff4a278d..425c4291 100644
--- a/libsoup/soup-message.c
+++ b/libsoup/soup-message.c
@@ -175,8 +175,8 @@ soup_message_finalize (GObject *object)
g_clear_object (&priv->tls_certificate);
- soup_message_headers_free (priv->request_headers);
- soup_message_headers_free (priv->response_headers);
+ soup_message_headers_unref (priv->request_headers);
+ soup_message_headers_unref (priv->response_headers);
g_clear_object (&priv->request_body_stream);
g_free (priv->reason_phrase);
diff --git a/libsoup/soup-multipart-input-stream.c b/libsoup/soup-multipart-input-stream.c
index fc10b525..8dce93a2 100644
--- a/libsoup/soup-multipart-input-stream.c
+++ b/libsoup/soup-multipart-input-stream.c
@@ -345,7 +345,7 @@ soup_multipart_input_stream_parse_headers (SoupMultipartInputStream *multipart)
if (success)
priv->remaining_bytes = soup_message_headers_get_content_length (priv->current_headers);
else
- g_clear_pointer (&priv->current_headers, soup_message_headers_free);
+ g_clear_pointer (&priv->current_headers, soup_message_headers_unref);
g_byte_array_remove_range (priv->meta_buf, 0, priv->meta_buf->len);
}
@@ -364,7 +364,7 @@ soup_multipart_input_stream_read_headers (SoupMultipartInputStream *multipart,
g_return_val_if_fail (priv->boundary != NULL, TRUE);
- g_clear_pointer (&priv->current_headers, soup_message_headers_free);
+ g_clear_pointer (&priv->current_headers, soup_message_headers_unref);
while (1) {
nread = soup_filter_input_stream_read_line (priv->base_stream, read_buf, sizeof (read_buf),
diff --git a/libsoup/soup-multipart.c b/libsoup/soup-multipart.c
index 1e11aa59..d2ea1b5b 100644
--- a/libsoup/soup-multipart.c
+++ b/libsoup/soup-multipart.c
@@ -53,7 +53,7 @@ soup_multipart_new_internal (char *mime_type, char *boundary)
multipart = g_slice_new (SoupMultipart);
multipart->mime_type = mime_type;
multipart->boundary = boundary;
- multipart->headers = g_ptr_array_new_with_free_func ((GDestroyNotify)soup_message_headers_free);
+ multipart->headers = g_ptr_array_new_with_free_func ((GDestroyNotify)soup_message_headers_unref);
multipart->bodies = g_ptr_array_new_with_free_func ((GDestroyNotify)g_bytes_unref);
return multipart;
diff --git a/tests/cache-test.c b/tests/cache-test.c
index 781b3355..97710047 100644
--- a/tests/cache-test.c
+++ b/tests/cache-test.c
@@ -652,7 +652,7 @@ do_headers_test (gconstpointer data)
header_value = soup_message_headers_get_list (headers, "My-Header");
g_assert_cmpstr (header_value, ==, "My header NEW value");
- soup_message_headers_free (headers);
+ soup_message_headers_unref (headers);
soup_test_session_abort_unref (session);
g_object_unref (cache);
diff --git a/tests/header-parsing-test.c b/tests/header-parsing-test.c
index bc701378..b7c46ea0 100644
--- a/tests/header-parsing-test.c
+++ b/tests/header-parsing-test.c
@@ -901,7 +901,7 @@ do_request_tests (void)
g_free (method);
g_free (path);
- soup_message_headers_free (headers);
+ soup_message_headers_unref (headers);
}
}
@@ -937,7 +937,7 @@ do_response_tests (void)
g_assert_null (resptests[i].reason_phrase);
g_free (reason_phrase);
- soup_message_headers_free (headers);
+ soup_message_headers_unref (headers);
}
}
@@ -1100,7 +1100,7 @@ do_content_disposition_tests (void)
g_assert_cmpstr (filename, ==, RFC5987_TEST_FALLBACK_FILENAME);
g_hash_table_destroy (params);
- soup_message_headers_free (hdrs);
+ soup_message_headers_unref (hdrs);
/* Ensure that soup-multipart always quotes filename */
g_test_bug ("641280");
@@ -1112,7 +1112,7 @@ do_content_disposition_tests (void)
hdrs = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
soup_multipart_to_message (multipart, hdrs, &buffer);
- soup_message_headers_free (hdrs);
+ soup_message_headers_unref (hdrs);
soup_multipart_free (multipart);
g_assert_nonnull (strstr (g_bytes_get_data (buffer, NULL), "filename=\"token\""));
@@ -1167,7 +1167,7 @@ do_content_type_tests (void)
mime_type = soup_message_headers_get_content_type (hdrs, &params);
g_assert_null (mime_type);
- soup_message_headers_free (hdrs);
+ soup_message_headers_unref (hdrs);
}
struct {
@@ -1232,7 +1232,7 @@ do_bad_header_tests (void)
bad_headers[i].value);
g_test_assert_expected_messages ();
}
- soup_message_headers_free (hdrs);
+ soup_message_headers_unref (hdrs);
}
int