(soup_session_abort): New, to cancel all pending requests.
authorDan Winship <danw@src.gnome.org>
Wed, 17 Sep 2003 20:21:28 +0000 (20:21 +0000)
committerDan Winship <danw@src.gnome.org>
Wed, 17 Sep 2003 20:21:28 +0000 (20:21 +0000)
ChangeLog
libsoup/soup-session.c
libsoup/soup-session.h

index 349e5f0..26642ed 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -4,6 +4,7 @@
        (one that pruned too little, one that pruned too much).
        (queue_message): When requeuing, don't run the queue;
        final_finished will take care of that later.
+       (soup_session_abort): New, to cancel all pending requests.
 
        * libsoup/soup-socket.c (soup_socket_connect, got_address): ref
        the socket while waiting for the address to resolve
index b71d214..b820357 100644 (file)
@@ -96,19 +96,21 @@ init (GObject *object)
 }
 
 static void
+dispose (GObject *object)
+{
+       SoupSession *session = SOUP_SESSION (object);
+
+       soup_session_abort (session);
+
+       G_OBJECT_CLASS (parent_class)->dispose (object);
+}
+
+static void
 finalize (GObject *object)
 {
        SoupSession *session = SOUP_SESSION (object);
-       SoupMessageQueueIter iter;
-       SoupMessage *msg;
 
-       for (msg = soup_message_queue_first (session->priv->queue, &iter); msg;
-            msg = soup_message_queue_next (session->priv->queue, &iter)) {
-               soup_message_queue_remove (session->priv->queue, &iter);
-               soup_message_cancel (msg);
-       }
        soup_message_queue_destroy (session->priv->queue);
-
        g_free (session->priv);
 
        G_OBJECT_CLASS (parent_class)->finalize (object);
@@ -120,6 +122,7 @@ class_init (GObjectClass *object_class)
        parent_class = g_type_class_ref (PARENT_TYPE);
 
        /* virtual method override */
+       object_class->dispose = dispose;
        object_class->finalize = finalize;
        object_class->set_property = set_property;
        object_class->get_property = get_property;
@@ -923,3 +926,21 @@ soup_session_send_message (SoupSession *session, SoupMessage *req)
 
        return req->status_code;
 }
+
+/**
+ * soup_session_abort:
+ * @session: the session
+ *
+ * Cancels all pending requests in @session.
+ **/
+void
+soup_session_abort (SoupSession *session)
+{
+       SoupMessageQueueIter iter;
+       SoupMessage *msg;
+
+       for (msg = soup_message_queue_first (session->priv->queue, &iter); msg; msg = soup_message_queue_next (session->priv->queue, &iter)) {
+               soup_message_queue_remove (session->priv->queue, &iter);
+               soup_message_cancel (msg);
+       }
+}
index 5ad03c2..9b2e03a 100644 (file)
@@ -56,7 +56,9 @@ void            soup_session_requeue_message  (SoupSession           *session,
                                               SoupMessage           *req);
 
 guint           soup_session_send_message     (SoupSession           *session,
-                                              SoupMessage            *req);
+                                              SoupMessage           *req);
+
+void            soup_session_abort            (SoupSession           *session);
 
 
 #endif /* SOUP_SESSION_H */