[ostree] fetcher: Add "config-flags" construct-only property
- From: Matthew Barnes <mbarnes src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [ostree] fetcher: Add "config-flags" construct-only property
- Date: Mon, 14 Dec 2015 17:53:36 +0000 (UTC)
commit af30fc764a25c1888968d3a69bfc9b8e377427c1
Author: Matthew Barnes <mbarnes redhat com>
Date: Mon Nov 9 19:04:42 2015 -0500
fetcher: Add "config-flags" construct-only property
A lot of effort here just to avoid touching SoupSession directly in
ostree_fetcher_new(). The reason will become apparent in subsequent
commits.
Note this introduces generated enum/flags GTypes using glib-mkenums.
I could have just made the property type as plain integer, but doing
properties right will henceforth be easier now that the automake-fu
is established.
Makefile-libostree.am | 25 ++++++++++
configure.ac | 2 +
src/libostree/ostree-enumtypes.c.template | 60 +++++++++++++++++++++++++
src/libostree/ostree-enumtypes.h.template | 43 ++++++++++++++++++
src/libostree/ostree-fetcher.c | 69 +++++++++++++++++++++++++++--
5 files changed, 195 insertions(+), 4 deletions(-)
---
diff --git a/Makefile-libostree.am b/Makefile-libostree.am
index 85fbb44..41976ff 100644
--- a/Makefile-libostree.am
+++ b/Makefile-libostree.am
@@ -33,12 +33,37 @@ lib_LTLIBRARIES += libostree-1.la
libostreeincludedir = $(includedir)/ostree-1
libostreeinclude_HEADERS = $(libostree_public_headers)
+ENUM_TYPES = \
+ src/libostree/ostree-fetcher.h \
+ $(NULL)
+
+src/libostree/ostree-enumtypes.h: src/libostree/ostree-enumtypes.h.template $(ENUM_TYPES)
+ $(AM_V_GEN) $(GLIB_MKENUMS) \
+ --template src/libostree/ostree-enumtypes.h.template \
+ $(ENUM_TYPES) > $@
+
+src/libostree/ostree-enumtypes.c: src/libostree/ostree-enumtypes.c.template $(ENUM_TYPES)
+ $(AM_V_GEN) $(GLIB_MKENUMS) \
+ --template src/libostree/ostree-enumtypes.c.template \
+ --fhead "#include \"ostree-enumtypes.h\"" \
+ $(ENUM_TYPES) > $@
+
+ENUM_GENERATED = \
+ src/libostree/ostree-enumtypes.h \
+ src/libostree/ostree-enumtypes.c \
+ $(NULL)
+
+BUILT_SOURCES += $(ENUM_GENERATED)
+
+CLEANFILES += $(BUILT_SOURCES)
+
libbupsplit_la_SOURCES = \
src/libostree/bupsplit.h \
src/libostree/bupsplit.c \
$(NULL)
libostree_1_la_SOURCES = \
+ $(ENUM_GENERATED) \
src/libostree/ostree-async-progress.c \
src/libostree/ostree-cmdprivate.h \
src/libostree/ostree-cmdprivate.c \
diff --git a/configure.ac b/configure.ac
index 1135ff6..0bf5a2c 100644
--- a/configure.ac
+++ b/configure.ac
@@ -47,6 +47,8 @@ AS_IF([test "$YACC" = :], [AC_MSG_ERROR([bison not found but required])])
PKG_PROG_PKG_CONFIG
+AM_PATH_GLIB_2_0
+
GIO_DEPENDENCY="gio-unix-2.0 >= 2.40.0 libgsystem >= 2015.1"
PKG_CHECK_MODULES(OT_DEP_GIO_UNIX, $GIO_DEPENDENCY)
diff --git a/src/libostree/ostree-enumtypes.c.template b/src/libostree/ostree-enumtypes.c.template
new file mode 100644
index 0000000..fe8807a
--- /dev/null
+++ b/src/libostree/ostree-enumtypes.c.template
@@ -0,0 +1,60 @@
+/*** BEGIN file-header ***/
+/*
+ * Copyright (C) 2015 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+/* enumerations from "@filename@" */
+#include "@filename@"
+
+/*** END file-production ***/
+
+/*** BEGIN value-header ***/
+GType
+ enum_name@_get_type (void)
+{
+ static volatile gsize the_type__volatile = 0;
+
+ if (g_once_init_enter (&the_type__volatile))
+ {
+ static const G Type@Value values[] = {
+/*** END value-header ***/
+
+/*** BEGIN value-production ***/
+ { @VALUENAME@,
+ "@VALUENAME@",
+ "@valuenick@" },
+/*** END value-production ***/
+
+/*** BEGIN value-tail ***/
+ { 0, NULL, NULL }
+ };
+
+ GType the_type = g_ type@_register_static (
+ g_intern_static_string ("@EnumName@"),
+ values);
+
+ g_once_init_leave (&the_type__volatile, the_type);
+ }
+
+ return the_type__volatile;
+}
+
+/*** END value-tail ***/
diff --git a/src/libostree/ostree-enumtypes.h.template b/src/libostree/ostree-enumtypes.h.template
new file mode 100644
index 0000000..85ec41e
--- /dev/null
+++ b/src/libostree/ostree-enumtypes.h.template
@@ -0,0 +1,43 @@
+/*** BEGIN file-header ***/
+/*
+ * Copyright (C) 2015 Red Hat, Inc.
+ *
+ * This library is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the
+ * Free Software Foundation, Inc., 59 Temple Place - Suite 330,
+ * Boston, MA 02111-1307, USA.
+ */
+
+/*** END file-header ***/
+
+/*** BEGIN file-production ***/
+#pragma once
+
+#include <glib-object.h>
+
+G_BEGIN_DECLS
+
+/* Enumerations from "@filename@" */
+
+/*** END file-production ***/
+
+/*** BEGIN enumeration-production ***/
+#define @ENUMPREFIX _TYPE_@ENUMSHORT@ (@enum_name _get_type ())
+GType @enum_name _get_type (void) G_GNUC_CONST;
+
+/*** END enumeration-production ***/
+
+/*** BEGIN file-tail ***/
+G_END_DECLS
+
+/*** END file-tail ***/
diff --git a/src/libostree/ostree-fetcher.c b/src/libostree/ostree-fetcher.c
index 86ab26a..c3bacd1 100644
--- a/src/libostree/ostree-fetcher.c
+++ b/src/libostree/ostree-fetcher.c
@@ -29,6 +29,7 @@
#ifdef HAVE_LIBSOUP_CLIENT_CERTS
#include "ostree-tls-cert-interaction.h"
#endif
+#include "ostree-enumtypes.h"
#include "ostree.h"
#include "ostree-repo-private.h"
#include "otutil.h"
@@ -63,6 +64,7 @@ struct OstreeFetcher
{
GObject parent_instance;
+ OstreeFetcherConfigFlags config_flags;
int tmpdir_dfd;
char *tmpdir_name;
GLnxLockFile tmpdir_lock;
@@ -83,6 +85,11 @@ struct OstreeFetcher
gint max_outstanding;
};
+enum {
+ PROP_0,
+ PROP_CONFIG_FLAGS
+};
+
G_DEFINE_TYPE (OstreeFetcher, _ostree_fetcher, G_TYPE_OBJECT)
static int
@@ -112,6 +119,44 @@ pending_uri_free (OstreeFetcherPendingURI *pending)
}
static void
+_ostree_fetcher_set_property (GObject *object,
+ guint prop_id,
+ const GValue *value,
+ GParamSpec *pspec)
+{
+ OstreeFetcher *self = OSTREE_FETCHER (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONFIG_FLAGS:
+ self->config_flags = g_value_get_flags (value);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
+_ostree_fetcher_get_property (GObject *object,
+ guint prop_id,
+ GValue *value,
+ GParamSpec *pspec)
+{
+ OstreeFetcher *self = OSTREE_FETCHER (object);
+
+ switch (prop_id)
+ {
+ case PROP_CONFIG_FLAGS:
+ g_value_set_flags (value, self->config_flags);
+ break;
+ default:
+ G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
+ break;
+ }
+}
+
+static void
_ostree_fetcher_finalize (GObject *object)
{
OstreeFetcher *self;
@@ -147,7 +192,20 @@ _ostree_fetcher_class_init (OstreeFetcherClass *klass)
{
GObjectClass *gobject_class = G_OBJECT_CLASS (klass);
+ gobject_class->set_property = _ostree_fetcher_set_property;
+ gobject_class->get_property = _ostree_fetcher_get_property;
gobject_class->finalize = _ostree_fetcher_finalize;
+
+ g_object_class_install_property (gobject_class,
+ PROP_CONFIG_FLAGS,
+ g_param_spec_flags ("config-flags",
+ "",
+ "",
+ OSTREE_TYPE_FETCHER_CONFIG_FLAGS,
+ OSTREE_FETCHER_FLAGS_NONE,
+ G_PARAM_READWRITE |
+ G_PARAM_CONSTRUCT_ONLY |
+ G_PARAM_STATIC_STRINGS));
}
static void
@@ -175,6 +233,9 @@ _ostree_fetcher_init (OstreeFetcher *self)
if (g_getenv ("OSTREE_DEBUG_HTTP"))
soup_session_add_feature (self->session, (SoupSessionFeature*)soup_logger_new (SOUP_LOGGER_LOG_BODY,
500));
+ if ((self->config_flags & OSTREE_FETCHER_FLAGS_TLS_PERMISSIVE) > 0)
+ g_object_set (self->session, SOUP_SESSION_SSL_STRICT, FALSE, NULL);
+
self->requester = (SoupRequester *)soup_session_get_feature (self->session, SOUP_TYPE_REQUESTER);
g_object_get (self->session, "max-conns-per-host", &max_conns, NULL);
if (max_conns <= 8)
@@ -202,7 +263,9 @@ _ostree_fetcher_new (int tmpdir_dfd,
GCancellable *cancellable,
GError **error)
{
- OstreeFetcher *self = (OstreeFetcher*)g_object_new (OSTREE_TYPE_FETCHER, NULL);
+ OstreeFetcher *self;
+
+ self = g_object_new (OSTREE_TYPE_FETCHER, "config-flags", flags, NULL);
if (!_ostree_repo_allocate_tmpdir (tmpdir_dfd,
"fetcher-",
@@ -213,9 +276,7 @@ _ostree_fetcher_new (int tmpdir_dfd,
cancellable, error))
return NULL;
- self->base_tmpdir_dfd = tmpdir_dfd;
- if ((flags & OSTREE_FETCHER_FLAGS_TLS_PERMISSIVE) > 0)
- g_object_set ((GObject*)self->session, "ssl-strict", FALSE, NULL);
+ self->tmpdir_dfd = tmpdir_dfd;
return self;
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]