(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
}
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);
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;
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);
+ }
+}