From: Dan Winship Date: Sun, 27 Jan 2008 17:08:14 +0000 (+0000) Subject: Fix session ids by using weak refs for the logger cleanup rather than X-Git-Tag: LIBSOUP_2_3_0_1~6 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=164c51730cf965148111a6eff591aa94acbd9303;p=platform%2Fupstream%2Flibsoup.git Fix session ids by using weak refs for the logger cleanup rather than * libsoup/soup-logger.c (soup_logger_attach): Fix session ids by using weak refs for the logger cleanup rather than trying to use the same qdata for two different things. (print_request, print_response): use full type names in the Soup-Debug line, since SoupSessionSync and SoupSessionAsync get numbered separately. svn path=/trunk/; revision=1054 --- diff --git a/ChangeLog b/ChangeLog index 0c96757..4307310 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,5 +1,14 @@ 2008-01-27 Dan Winship + * libsoup/soup-logger.c (soup_logger_attach): Fix session ids by + using weak refs for the logger cleanup rather than trying to use + the same qdata for two different things. + (print_request, print_response): use full type names in the + Soup-Debug line, since SoupSessionSync and SoupSessionAsync get + numbered separately. + +2008-01-27 Dan Winship + * libsoup/soup-session-async.c (final_finished): Don't run the queue again if the callback destroyed the session. #511868, Stef Walter. diff --git a/libsoup/soup-logger.c b/libsoup/soup-logger.c index a822134..aebbff5 100644 --- a/libsoup/soup-logger.c +++ b/libsoup/soup-logger.c @@ -38,7 +38,7 @@ * * > POST /unauth HTTP/1.1 * > Soup-Debug-Timestamp: 1200171744 - * > Soup-Debug: session 1 (0x612190), msg 1 (0x617000), conn 1 (0x612220) + * > Soup-Debug: SoupSessionAsync 1 (0x612190), SoupMessage 1 (0x617000), SoupSocket 1 (0x612220) * > Host: localhost * > Content-Type: text/plain * > Connection: close @@ -47,7 +47,7 @@ * * < HTTP/1.1 201 Created * < Soup-Debug-Timestamp: 1200171744 - * < Soup-Debug: msg 1 (0x617000) + * < Soup-Debug: SoupMessage 1 (0x617000) * < Date: Sun, 12 Jan 2008 21:02:24 GMT * < Content-Length: 0 * @@ -323,6 +323,12 @@ soup_logger_clear_id (SoupLogger *logger, gpointer object) static void request_started (SoupSession *session, SoupMessage *msg, SoupSocket *socket, gpointer user_data); +static void +weak_notify_unref (gpointer logger, GObject *ex_session) +{ + g_object_unref (logger); +} + /** * soup_logger_attach: * @logger: a #SoupLogger @@ -339,16 +345,13 @@ void soup_logger_attach (SoupLogger *logger, SoupSession *session) { - SoupLoggerPrivate *priv = SOUP_LOGGER_GET_PRIVATE (logger); - if (!soup_logger_get_id (logger, session)) soup_logger_set_id (logger, session); g_signal_connect (session, "request_started", G_CALLBACK (request_started), logger); - g_object_set_qdata_full (G_OBJECT (session), priv->tag, - g_object_ref (logger), - g_object_unref); + g_object_weak_ref (G_OBJECT (session), + weak_notify_unref, g_object_ref (logger)); } /** @@ -362,11 +365,10 @@ void soup_logger_detach (SoupLogger *logger, SoupSession *session) { - SoupLoggerPrivate *priv = SOUP_LOGGER_GET_PRIVATE (logger); - g_signal_handlers_disconnect_by_func (session, request_started, logger); - g_object_set_qdata (G_OBJECT (session), priv->tag, NULL); + g_object_weak_unref (G_OBJECT (session), + weak_notify_unref, logger); } static void @@ -467,9 +469,12 @@ print_request (SoupLogger *logger, SoupMessage *msg, "Soup-Debug-Timestamp: %lu", (unsigned long)time (0)); soup_logger_print (logger, SOUP_LOGGER_LOG_MINIMAL, - "Soup-Debug: session %u (%p), msg %u (%p), conn %u (%p)%s", + "Soup-Debug: %s %u (%p), %s %u (%p), %s %u (%p)%s", + g_type_name_from_instance ((GTypeInstance *)session), soup_logger_get_id (logger, session), session, + g_type_name_from_instance ((GTypeInstance *)msg), soup_logger_get_id (logger, msg), msg, + g_type_name_from_instance ((GTypeInstance *)socket), soup_logger_get_id (logger, socket), socket, restarted ? ", restarted" : ""); @@ -521,7 +526,8 @@ print_response (SoupLogger *logger, SoupMessage *msg) "Soup-Debug-Timestamp: %lu", (unsigned long)time (0)); soup_logger_print (logger, SOUP_LOGGER_LOG_MINIMAL, - "Soup-Debug: msg %u (%p)", + "Soup-Debug: %s %u (%p)", + g_type_name_from_instance ((GTypeInstance *)msg), soup_logger_get_id (logger, msg), msg); if (log_level == SOUP_LOGGER_LOG_MINIMAL)