[libsoup: 3/5] soup-socket: add flag close_on_dispose to SoupSocket
- From: Dan Winship <danw src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [libsoup: 3/5] soup-socket: add flag close_on_dispose to SoupSocket
- Date: Fri, 2 May 2014 13:12:56 +0000 (UTC)
commit f2753f27a1cd9059e7392f60c1d31c9c4df7bf65
Author: Dirkjan Ochtman <dirkjan ochtman nl>
Date: Mon Jan 6 08:42:00 2014 -0500
soup-socket: add flag close_on_dispose to SoupSocket
https://bugzilla.gnome.org/show_bug.cgi?id=721343
libsoup/soup-socket-private.h | 1 +
libsoup/soup-socket.c | 18 +++++++++++++++++-
2 files changed, 18 insertions(+), 1 deletions(-)
---
diff --git a/libsoup/soup-socket-private.h b/libsoup/soup-socket-private.h
index c0c8dca..fc6690a 100644
--- a/libsoup/soup-socket-private.h
+++ b/libsoup/soup-socket-private.h
@@ -9,6 +9,7 @@
#include "soup-socket.h"
#define SOUP_SOCKET_SOCKET_PROPERTIES "socket-properties"
+#define SOUP_SOCKET_CLOSE_ON_DISPOSE "close-on-dispose"
gboolean soup_socket_connect_sync_internal (SoupSocket *sock,
GCancellable *cancellable,
diff --git a/libsoup/soup-socket.c b/libsoup/soup-socket.c
index 651e960..87671c1 100644
--- a/libsoup/soup-socket.c
+++ b/libsoup/soup-socket.c
@@ -58,6 +58,7 @@ enum {
PROP_TRUSTED_CERTIFICATE,
PROP_TLS_CERTIFICATE,
PROP_TLS_ERRORS,
+ PROP_CLOSE_ON_DISPOSE,
PROP_SOCKET_PROPERTIES,
LAST_PROP
@@ -78,6 +79,7 @@ typedef struct {
guint ssl_strict:1;
guint ssl_fallback:1;
guint clean_dispose:1;
+ guint close_on_dispose:1;
guint use_thread_context:1;
gpointer ssl_creds;
@@ -135,7 +137,7 @@ soup_socket_finalize (GObject *object)
g_warning ("Disposing socket %p during connect", object);
g_object_unref (priv->connect_cancel);
}
- if (priv->gsock) {
+ if (priv->gsock && priv->close_on_dispose) {
if (priv->clean_dispose)
g_warning ("Disposing socket %p while still connected", object);
disconnect_internal (SOUP_SOCKET (object), TRUE);
@@ -253,6 +255,9 @@ soup_socket_set_property (GObject *object, guint prop_id,
priv->clean_dispose = TRUE;
}
break;
+ case PROP_CLOSE_ON_DISPOSE:
+ priv->close_on_dispose = g_value_get_boolean (value);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -309,6 +314,9 @@ soup_socket_get_property (GObject *object, guint prop_id,
g_value_set_flags (value, priv->tls_errors);
break;
break;
+ case PROP_CLOSE_ON_DISPOSE:
+ g_value_set_boolean (value, priv->close_on_dispose);
+ break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
break;
@@ -643,6 +651,14 @@ soup_socket_class_init (SoupSocketClass *socket_class)
"Socket properties",
SOUP_TYPE_SOCKET_PROPERTIES,
G_PARAM_WRITABLE));
+
+ g_object_class_install_property (
+ object_class, PROP_CLOSE_ON_DISPOSE,
+ g_param_spec_boolean (SOUP_SOCKET_CLOSE_ON_DISPOSE,
+ "Close socket on disposal",
+ "Whether the socket is closed on disposal",
+ TRUE,
+ G_PARAM_READWRITE | G_PARAM_CONSTRUCT));
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]