[libsoup/carlosgc/thread-safe: 15/21] logger: remove soup_logger_request_body_setup()




commit d19b4272c357ce025b80cf2fc013e8d0b424d7f0
Author: Carlos Garcia Campos <cgarcia igalia com>
Date:   Wed Apr 20 12:30:11 2022 +0200

    logger: remove soup_logger_request_body_setup()
    
    We can use the same approach as http2 backend and call
    soup_logger_log_request_data() from the body stream wrote data callback.

 libsoup/http1/soup-client-message-io-http1.c | 13 +++---
 libsoup/soup-logger-private.h                |  4 --
 libsoup/soup-logger.c                        | 60 ----------------------------
 3 files changed, 8 insertions(+), 69 deletions(-)
---
diff --git a/libsoup/http1/soup-client-message-io-http1.c b/libsoup/http1/soup-client-message-io-http1.c
index 129ddb4f..1f421d6d 100644
--- a/libsoup/http1/soup-client-message-io-http1.c
+++ b/libsoup/http1/soup-client-message-io-http1.c
@@ -38,6 +38,9 @@ typedef struct {
 
         SoupMessageMetrics *metrics;
 
+        /* Request body logger */
+        SoupLogger *logger;
+
 #ifdef HAVE_SYSPROF
         gint64 begin_time_nsec;
 #endif
@@ -146,8 +149,11 @@ request_body_stream_wrote_data_cb (SoupMessage *msg,
                         client_io->msg_io->metrics->request_body_size += count;
         }
 
-        if (!is_metadata)
+        if (!is_metadata) {
+                if (client_io->msg_io->logger)
+                        soup_logger_log_request_data (client_io->msg_io->logger, msg, (const char *)buffer, 
count);
                 soup_message_wrote_body_data (msg, count);
+        }
 }
 
 static void
@@ -354,10 +360,7 @@ io_write (SoupClientMessageIOHTTP1 *client_io,
                 io->write_state = SOUP_MESSAGE_IO_STATE_BODY;
                 logger = soup_session_get_feature_for_message (client_io->msg_io->item->session,
                                                                SOUP_TYPE_LOGGER, msg);
-                if (logger) {
-                        soup_logger_request_body_setup (SOUP_LOGGER (logger), msg,
-                                                        SOUP_BODY_OUTPUT_STREAM (io->body_ostream));
-                }
+                client_io->msg_io->logger = logger ? SOUP_LOGGER (logger) : NULL;
                 break;
 
         case SOUP_MESSAGE_IO_STATE_BODY:
diff --git a/libsoup/soup-logger-private.h b/libsoup/soup-logger-private.h
index e48d16c0..c0c16b2e 100644
--- a/libsoup/soup-logger-private.h
+++ b/libsoup/soup-logger-private.h
@@ -9,10 +9,6 @@
 
 G_BEGIN_DECLS
 
-void soup_logger_request_body_setup (SoupLogger           *logger,
-                                     SoupMessage          *msg,
-                                     SoupBodyOutputStream *stream);
-
 void soup_logger_log_request_data (SoupLogger *logger, SoupMessage *msg, const char *buffer, gsize len);
 
 G_END_DECLS
diff --git a/libsoup/soup-logger.c b/libsoup/soup-logger.c
index af968ff2..f26d7c13 100644
--- a/libsoup/soup-logger.c
+++ b/libsoup/soup-logger.c
@@ -94,7 +94,6 @@ typedef struct {
         GMutex              mutex;
        GHashTable         *ids;
        GHashTable         *request_bodies;
-       GHashTable         *request_messages;
        GHashTable         *response_bodies;
 
        SoupSession        *session;
@@ -125,8 +124,6 @@ enum {
 
 static GParamSpec *properties[LAST_PROPERTY] = { NULL, };
 
-static void body_ostream_done (gpointer data, GObject *bostream);
-
 static void soup_logger_session_feature_init (SoupSessionFeatureInterface *feature_interface, gpointer 
interface_data);
 
 static SoupContentProcessorInterface *soup_logger_default_content_processor_interface;
@@ -250,29 +247,18 @@ soup_logger_init (SoupLogger *logger)
        priv->ids = g_hash_table_new (NULL, NULL);
        priv->request_bodies = g_hash_table_new_full (NULL, NULL, NULL, body_free);
        priv->response_bodies = g_hash_table_new_full (NULL, NULL, NULL, body_free);
-       priv->request_messages = g_hash_table_new (NULL, NULL);
         g_mutex_init (&priv->mutex);
 }
 
-static void
-body_ostream_drop_ref (gpointer key, gpointer value, gpointer data)
-{
-        g_object_weak_unref (key, body_ostream_done, data);
-}
-
 static void
 soup_logger_finalize (GObject *object)
 {
        SoupLogger *logger = SOUP_LOGGER (object);
        SoupLoggerPrivate *priv = soup_logger_get_instance_private (logger);
 
-       g_hash_table_foreach (priv->request_messages,
-                             body_ostream_drop_ref, priv);
-
        g_hash_table_destroy (priv->ids);
        g_hash_table_destroy (priv->request_bodies);
        g_hash_table_destroy (priv->response_bodies);
-       g_hash_table_destroy (priv->request_messages);
 
        if (priv->request_filter_dnotify)
                priv->request_filter_dnotify (priv->request_filter_data);
@@ -845,52 +831,6 @@ got_body (SoupMessage *msg, gpointer user_data)
         g_mutex_unlock (&priv->mutex);
 }
 
-static void
-body_stream_wrote_data_cb (GOutputStream *stream,
-                           const void    *buffer,
-                           guint          count,
-                           gboolean       is_metadata,
-                           SoupLogger    *logger)
-{
-        SoupLoggerPrivate *priv;
-        SoupMessage *msg;
-
-        if (is_metadata)
-                return;
-
-        priv = soup_logger_get_instance_private (logger);
-        g_mutex_lock (&priv->mutex);
-        msg = g_hash_table_lookup (priv->request_messages, stream);
-        g_mutex_unlock (&priv->mutex);
-        write_body (logger, buffer, count, msg, priv->request_bodies);
-}
-
-static void
-body_ostream_done (gpointer data, GObject *bostream)
-{
-        SoupLoggerPrivate *priv = data;
-
-        g_mutex_lock (&priv->mutex);
-        g_hash_table_remove (priv->request_messages, bostream);
-        g_mutex_unlock (&priv->mutex);
-}
-
-void
-soup_logger_request_body_setup (SoupLogger           *logger,
-                                SoupMessage          *msg,
-                                SoupBodyOutputStream *stream)
-{
-        SoupLoggerPrivate *priv = soup_logger_get_instance_private (logger);
-
-        g_mutex_lock (&priv->mutex);
-        g_hash_table_insert (priv->request_messages, stream, msg);
-        g_mutex_unlock (&priv->mutex);
-        g_signal_connect_object (stream, "wrote-data",
-                                 G_CALLBACK (body_stream_wrote_data_cb),
-                                 logger, 0);
-        g_object_weak_ref (G_OBJECT (stream), body_ostream_done, priv);
-}
-
 static void
 wrote_body (SoupMessage *msg, gpointer user_data)
 {


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