summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPatrick Griffis <pgriffis@igalia.com>2020-03-25 03:59:41 -0700
committerPatrick Griffis <pgriffis@igalia.com>2020-09-19 15:41:24 -0700
commit4e39dbad76cbe672cf4a68afe2eb35e0ad0c67bc (patch)
tree53ce6ae75af42ecba2326997a3333fb52c35bb93
parent55d928b6cab01a96295e7d3da86942a3bfb29847 (diff)
downloadlibsoup-4e39dbad76cbe672cf4a68afe2eb35e0ad0c67bc.tar.gz
Modernize GObject declarations
-rw-r--r--docs/reference/meson.build1
-rw-r--r--libsoup/auth/soup-auth-basic.c4
-rw-r--r--libsoup/auth/soup-auth-basic.h23
-rw-r--r--libsoup/auth/soup-auth-digest-private.h41
-rw-r--r--libsoup/auth/soup-auth-digest.c10
-rw-r--r--libsoup/auth/soup-auth-digest.h60
-rw-r--r--libsoup/auth/soup-auth-domain-basic.c4
-rw-r--r--libsoup/auth/soup-auth-domain-basic.h32
-rw-r--r--libsoup/auth/soup-auth-domain-digest.c6
-rw-r--r--libsoup/auth/soup-auth-domain-digest.h32
-rw-r--r--libsoup/auth/soup-auth-domain.h32
-rw-r--r--libsoup/auth/soup-auth-manager.c35
-rw-r--r--libsoup/auth/soup-auth-manager.h30
-rw-r--r--libsoup/auth/soup-auth-negotiate.c5
-rw-r--r--libsoup/auth/soup-auth-negotiate.h23
-rw-r--r--libsoup/auth/soup-auth-ntlm.c4
-rw-r--r--libsoup/auth/soup-auth-ntlm.h25
-rw-r--r--libsoup/auth/soup-auth.c28
-rw-r--r--libsoup/auth/soup-auth.h46
-rw-r--r--libsoup/auth/soup-connection-auth.c23
-rw-r--r--libsoup/auth/soup-connection-auth.h28
-rw-r--r--libsoup/cache/soup-cache-private.h5
-rw-r--r--libsoup/cache/soup-cache.c120
-rw-r--r--libsoup/cache/soup-cache.h36
-rw-r--r--libsoup/content-sniffer/soup-content-decoder.c28
-rw-r--r--libsoup/content-sniffer/soup-content-decoder.h32
-rw-r--r--libsoup/content-sniffer/soup-content-processor.c4
-rw-r--r--libsoup/content-sniffer/soup-content-processor.h17
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer-stream.c112
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer-stream.h31
-rw-r--r--libsoup/content-sniffer/soup-content-sniffer.h35
-rw-r--r--libsoup/content-sniffer/soup-converter-wrapper.c28
-rw-r--r--libsoup/content-sniffer/soup-converter-wrapper.h33
-rw-r--r--libsoup/cookies/soup-cookie-jar-db.c5
-rw-r--r--libsoup/cookies/soup-cookie-jar-db.h32
-rw-r--r--libsoup/cookies/soup-cookie-jar-text.c6
-rw-r--r--libsoup/cookies/soup-cookie-jar-text.h31
-rw-r--r--libsoup/cookies/soup-cookie-jar.h26
-rw-r--r--libsoup/cookies/soup-cookie.h7
-rw-r--r--libsoup/hsts/soup-hsts-enforcer-db.c21
-rw-r--r--libsoup/hsts/soup-hsts-enforcer-db.h36
-rw-r--r--libsoup/hsts/soup-hsts-enforcer.c59
-rw-r--r--libsoup/hsts/soup-hsts-enforcer.h34
-rw-r--r--libsoup/hsts/soup-hsts-policy.h7
-rw-r--r--libsoup/include/soup-installed.h6
-rw-r--r--libsoup/meson.build4
-rw-r--r--libsoup/soup-autocleanups.h65
-rw-r--r--libsoup/soup-date.h7
-rw-r--r--libsoup/soup-logger.c6
-rw-r--r--libsoup/soup-logger.h31
-rw-r--r--libsoup/soup-message-body.h8
-rw-r--r--libsoup/soup-message-headers.h7
-rw-r--r--libsoup/soup-message-io.c6
-rw-r--r--libsoup/soup-method.h5
-rw-r--r--libsoup/soup-multipart-input-stream.c53
-rw-r--r--libsoup/soup-multipart-input-stream.h30
-rw-r--r--libsoup/soup-multipart.h7
-rw-r--r--libsoup/soup-request-data.c28
-rw-r--r--libsoup/soup-request-data.h27
-rw-r--r--libsoup/soup-request-file.c65
-rw-r--r--libsoup/soup-request-file.h27
-rw-r--r--libsoup/soup-request-http.c45
-rw-r--r--libsoup/soup-request-http.h27
-rw-r--r--libsoup/soup-request.c43
-rw-r--r--libsoup/soup-request.h26
-rw-r--r--libsoup/soup-server.h32
-rw-r--r--libsoup/soup-session-feature.c22
-rw-r--r--libsoup/soup-session-feature.h21
-rw-r--r--libsoup/soup-session.c9
-rw-r--r--libsoup/soup-session.h39
-rw-r--r--libsoup/soup-status.h5
-rw-r--r--libsoup/soup-tld.h5
-rw-r--r--libsoup/soup-uri.h7
-rw-r--r--libsoup/soup-version.h.in5
-rw-r--r--libsoup/soup.h6
-rw-r--r--libsoup/websocket/soup-websocket-connection.c450
-rw-r--r--libsoup/websocket/soup-websocket-connection.h30
-rw-r--r--libsoup/websocket/soup-websocket-extension-deflate.c4
-rw-r--r--libsoup/websocket/soup-websocket-extension-deflate.h26
-rw-r--r--libsoup/websocket/soup-websocket-extension-manager.c4
-rw-r--r--libsoup/websocket/soup-websocket-extension-manager.h23
-rw-r--r--libsoup/websocket/soup-websocket-extension.h31
-rw-r--r--libsoup/websocket/soup-websocket.h5
-rw-r--r--libsoup/xmlrpc/soup-xmlrpc.h7
84 files changed, 955 insertions, 1536 deletions
diff --git a/docs/reference/meson.build b/docs/reference/meson.build
index 89413822..724a8d92 100644
--- a/docs/reference/meson.build
+++ b/docs/reference/meson.build
@@ -1,6 +1,5 @@
ignore_headers = [
'soup.h',
- 'soup-autocleanups.h',
'soup-enum-types.h',
'soup-message-private.h',
'soup-session-private.h',
diff --git a/libsoup/auth/soup-auth-basic.c b/libsoup/auth/soup-auth-basic.c
index 5f1e7186..db13124c 100644
--- a/libsoup/auth/soup-auth-basic.c
+++ b/libsoup/auth/soup-auth-basic.c
@@ -14,6 +14,10 @@
#include "soup-auth-basic.h"
#include "soup.h"
+struct _SoupAuthBasic {
+ SoupAuth parent;
+};
+
typedef struct {
char *token;
} SoupAuthBasicPrivate;
diff --git a/libsoup/auth/soup-auth-basic.h b/libsoup/auth/soup-auth-basic.h
index b7936871..947c4b92 100644
--- a/libsoup/auth/soup-auth-basic.h
+++ b/libsoup/auth/soup-auth-basic.h
@@ -3,25 +3,14 @@
* Copyright (C) 2000-2003, Ximian, Inc.
*/
-#ifndef __SOUP_AUTH_BASIC_H__
-#define __SOUP_AUTH_BASIC_H__ 1
+#pragma once
#include "soup-auth.h"
-#define SOUP_AUTH_BASIC(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_AUTH_BASIC, SoupAuthBasic))
-#define SOUP_AUTH_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_BASIC, SoupAuthBasicClass))
-#define SOUP_IS_AUTH_BASIC(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_AUTH_BASIC))
-#define SOUP_IS_AUTH_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_AUTH_BASIC))
-#define SOUP_AUTH_BASIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_BASIC, SoupAuthBasicClass))
+G_BEGIN_DECLS
-typedef struct {
- SoupAuth parent;
+#define SOUP_TYPE_AUTH_BASIC (soup_auth_basic_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupAuthBasic, soup_auth_basic, SOUP, AUTH_BASIC, SoupAuth)
-} SoupAuthBasic;
-
-typedef struct {
- SoupAuthClass parent_class;
-
-} SoupAuthBasicClass;
-
-#endif /* __SOUP_AUTH_BASIC_H__ */
+G_END_DECLS
diff --git a/libsoup/auth/soup-auth-digest-private.h b/libsoup/auth/soup-auth-digest-private.h
new file mode 100644
index 00000000..bb251ad0
--- /dev/null
+++ b/libsoup/auth/soup-auth-digest-private.h
@@ -0,0 +1,41 @@
+
+#pragma once
+
+#include "auth/soup-auth-digest.h"
+
+/* Utility routines (also used by SoupAuthDomainDigest) */
+
+typedef enum {
+ SOUP_AUTH_DIGEST_ALGORITHM_NONE,
+ SOUP_AUTH_DIGEST_ALGORITHM_MD5,
+ SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS
+} SoupAuthDigestAlgorithm;
+
+typedef enum {
+ SOUP_AUTH_DIGEST_QOP_AUTH = 1 << 0,
+ SOUP_AUTH_DIGEST_QOP_AUTH_INT = 1 << 1
+} SoupAuthDigestQop;
+
+SoupAuthDigestAlgorithm soup_auth_digest_parse_algorithm (const char *algorithm);
+char *soup_auth_digest_get_algorithm (SoupAuthDigestAlgorithm algorithm);
+
+SoupAuthDigestQop soup_auth_digest_parse_qop (const char *qop);
+char *soup_auth_digest_get_qop (SoupAuthDigestQop qop);
+
+void soup_auth_digest_compute_hex_urp (const char *username,
+ const char *realm,
+ const char *password,
+ char hex_urp[33]);
+void soup_auth_digest_compute_hex_a1 (const char *hex_urp,
+ SoupAuthDigestAlgorithm algorithm,
+ const char *nonce,
+ const char *cnonce,
+ char hex_a1[33]);
+void soup_auth_digest_compute_response (const char *method,
+ const char *uri,
+ const char *hex_a1,
+ SoupAuthDigestQop qop,
+ const char *nonce,
+ const char *cnonce,
+ int nc,
+ char response[33]);
diff --git a/libsoup/auth/soup-auth-digest.c b/libsoup/auth/soup-auth-digest.c
index e8ba9903..06439ea3 100644
--- a/libsoup/auth/soup-auth-digest.c
+++ b/libsoup/auth/soup-auth-digest.c
@@ -11,7 +11,7 @@
#include <string.h>
-#include "soup-auth-digest.h"
+#include "auth/soup-auth-digest-private.h"
#include "soup.h"
#include "soup-message-private.h"
@@ -19,6 +19,10 @@
#include <process.h>
#endif
+struct _SoupAuthDigest {
+ SoupAuth parent;
+};
+
typedef struct {
char *user;
char hex_urp[33];
@@ -309,7 +313,7 @@ soup_auth_digest_authenticate (SoupAuth *auth, const char *username,
priv->user = g_strdup (username);
/* compute "URP" (user:realm:password) */
- soup_auth_digest_compute_hex_urp (username, auth->realm,
+ soup_auth_digest_compute_hex_urp (username, soup_auth_get_realm (auth),
password ? password : "",
priv->hex_urp);
@@ -428,7 +432,7 @@ soup_auth_digest_get_authorization (SoupAuth *auth, SoupMessage *msg)
soup_header_g_string_append_param_quoted (out, "username", priv->user);
g_string_append (out, ", ");
- soup_header_g_string_append_param_quoted (out, "realm", auth->realm);
+ soup_header_g_string_append_param_quoted (out, "realm", soup_auth_get_realm (auth));
g_string_append (out, ", ");
soup_header_g_string_append_param_quoted (out, "nonce", priv->nonce);
g_string_append (out, ", ");
diff --git a/libsoup/auth/soup-auth-digest.h b/libsoup/auth/soup-auth-digest.h
index 59fd748e..d6673de0 100644
--- a/libsoup/auth/soup-auth-digest.h
+++ b/libsoup/auth/soup-auth-digest.h
@@ -3,62 +3,10 @@
* Copyright (C) 2000-2003, Ximian, Inc.
*/
-#ifndef __SOUP_AUTH_DIGEST_H__
-#define __SOUP_AUTH_DIGEST_H__ 1
+#pragma once
#include "soup-auth.h"
-#define SOUP_AUTH_DIGEST(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_AUTH_DIGEST, SoupAuthDigest))
-#define SOUP_AUTH_DIGEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_DIGEST, SoupAuthDigestClass))
-#define SOUP_IS_AUTH_DIGEST(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_AUTH_DIGEST))
-#define SOUP_IS_AUTH_DIGEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_AUTH_DIGEST))
-#define SOUP_AUTH_DIGEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_DIGEST, SoupAuthDigestClass))
-
-typedef struct {
- SoupAuth parent;
-
-} SoupAuthDigest;
-
-typedef struct {
- SoupAuthClass parent_class;
-
-} SoupAuthDigestClass;
-
-/* Utility routines (also used by SoupAuthDomainDigest) */
-
-typedef enum {
- SOUP_AUTH_DIGEST_ALGORITHM_NONE,
- SOUP_AUTH_DIGEST_ALGORITHM_MD5,
- SOUP_AUTH_DIGEST_ALGORITHM_MD5_SESS
-} SoupAuthDigestAlgorithm;
-
-typedef enum {
- SOUP_AUTH_DIGEST_QOP_AUTH = 1 << 0,
- SOUP_AUTH_DIGEST_QOP_AUTH_INT = 1 << 1
-} SoupAuthDigestQop;
-
-SoupAuthDigestAlgorithm soup_auth_digest_parse_algorithm (const char *algorithm);
-char *soup_auth_digest_get_algorithm (SoupAuthDigestAlgorithm algorithm);
-
-SoupAuthDigestQop soup_auth_digest_parse_qop (const char *qop);
-char *soup_auth_digest_get_qop (SoupAuthDigestQop qop);
-
-void soup_auth_digest_compute_hex_urp (const char *username,
- const char *realm,
- const char *password,
- char hex_urp[33]);
-void soup_auth_digest_compute_hex_a1 (const char *hex_urp,
- SoupAuthDigestAlgorithm algorithm,
- const char *nonce,
- const char *cnonce,
- char hex_a1[33]);
-void soup_auth_digest_compute_response (const char *method,
- const char *uri,
- const char *hex_a1,
- SoupAuthDigestQop qop,
- const char *nonce,
- const char *cnonce,
- int nc,
- char response[33]);
-
-#endif /* __SOUP_AUTH_DIGEST_H__ */
+#define SOUP_TYPE_AUTH_DIGEST (soup_auth_digest_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupAuthDigest, soup_auth_digest, SOUP, AUTH_DIGEST, SoupAuth)
diff --git a/libsoup/auth/soup-auth-domain-basic.c b/libsoup/auth/soup-auth-domain-basic.c
index e15f37f3..9a850050 100644
--- a/libsoup/auth/soup-auth-domain-basic.c
+++ b/libsoup/auth/soup-auth-domain-basic.c
@@ -31,6 +31,10 @@ enum {
LAST_PROP
};
+struct _SoupAuthDomainBasic {
+ SoupAuthDomain parent;
+};
+
typedef struct {
SoupAuthDomainBasicAuthCallback auth_callback;
gpointer auth_data;
diff --git a/libsoup/auth/soup-auth-domain-basic.h b/libsoup/auth/soup-auth-domain-basic.h
index 79ee6163..a260e891 100644
--- a/libsoup/auth/soup-auth-domain-basic.h
+++ b/libsoup/auth/soup-auth-domain-basic.h
@@ -3,42 +3,20 @@
* Copyright (C) 2007 Novell, Inc.
*/
-#ifndef __SOUP_AUTH_DOMAIN_BASIC_H__
-#define __SOUP_AUTH_DOMAIN_BASIC_H__ 1
+#pragma once
#include "soup-auth-domain.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_AUTH_DOMAIN_BASIC (soup_auth_domain_basic_get_type ())
-#define SOUP_AUTH_DOMAIN_BASIC(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_AUTH_DOMAIN_BASIC, SoupAuthDomainBasic))
-#define SOUP_AUTH_DOMAIN_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_DOMAIN_BASIC, SoupAuthDomainBasicClass))
-#define SOUP_IS_AUTH_DOMAIN_BASIC(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN_BASIC))
-#define SOUP_IS_AUTH_DOMAIN_BASIC_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN_BASIC))
-#define SOUP_AUTH_DOMAIN_BASIC_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_DOMAIN_BASIC, SoupAuthDomainBasicClass))
-
-typedef struct {
- SoupAuthDomain parent;
-
-} SoupAuthDomainBasic;
-
-typedef struct {
- SoupAuthDomainClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupAuthDomainBasicClass;
+#define SOUP_TYPE_AUTH_DOMAIN_BASIC (soup_auth_domain_basic_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupAuthDomainBasic, soup_auth_domain_basic, SOUP, AUTH_DOMAIN_BASIC, SoupAuthDomain)
#define SOUP_AUTH_DOMAIN_BASIC_AUTH_CALLBACK "auth-callback"
#define SOUP_AUTH_DOMAIN_BASIC_AUTH_DATA "auth-data"
SOUP_AVAILABLE_IN_2_4
-GType soup_auth_domain_basic_get_type (void);
-
-SOUP_AVAILABLE_IN_2_4
SoupAuthDomain *soup_auth_domain_basic_new (const char *optname1,
...) G_GNUC_NULL_TERMINATED;
@@ -55,5 +33,3 @@ void soup_auth_domain_basic_set_auth_callback (SoupAuthDomain *domain,
GDestroyNotify dnotify);
G_END_DECLS
-
-#endif /* __SOUP_AUTH_DOMAIN_BASIC_H__ */
diff --git a/libsoup/auth/soup-auth-domain-digest.c b/libsoup/auth/soup-auth-domain-digest.c
index b69b5829..ae9fa266 100644
--- a/libsoup/auth/soup-auth-domain-digest.c
+++ b/libsoup/auth/soup-auth-domain-digest.c
@@ -14,7 +14,7 @@
#include "soup-auth-domain-digest.h"
#include "soup.h"
-#include "soup-auth-digest.h"
+#include "auth/soup-auth-digest-private.h"
/**
* SECTION:soup-auth-domain-digest
@@ -33,6 +33,10 @@ enum {
LAST_PROP
};
+struct _SoupAuthDomainDigest {
+ SoupAuthDomain parent;
+};
+
typedef struct {
SoupAuthDomainDigestAuthCallback auth_callback;
gpointer auth_data;
diff --git a/libsoup/auth/soup-auth-domain-digest.h b/libsoup/auth/soup-auth-domain-digest.h
index 5fbe6c94..523497ce 100644
--- a/libsoup/auth/soup-auth-domain-digest.h
+++ b/libsoup/auth/soup-auth-domain-digest.h
@@ -3,42 +3,20 @@
* Copyright (C) 2007 Novell, Inc.
*/
-#ifndef __SOUP_AUTH_DOMAIN_DIGEST_H__
-#define __SOUP_AUTH_DOMAIN_DIGEST_H__ 1
+#pragma once
#include "soup-auth-domain.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_AUTH_DOMAIN_DIGEST (soup_auth_domain_digest_get_type ())
-#define SOUP_AUTH_DOMAIN_DIGEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_AUTH_DOMAIN_DIGEST, SoupAuthDomainDigest))
-#define SOUP_AUTH_DOMAIN_DIGEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_DOMAIN_DIGEST, SoupAuthDomainDigestClass))
-#define SOUP_IS_AUTH_DOMAIN_DIGEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN_DIGEST))
-#define SOUP_IS_AUTH_DOMAIN_DIGEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN_DIGEST))
-#define SOUP_AUTH_DOMAIN_DIGEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_DOMAIN_DIGEST, SoupAuthDomainDigestClass))
-
-typedef struct {
- SoupAuthDomain parent;
-
-} SoupAuthDomainDigest;
-
-typedef struct {
- SoupAuthDomainClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupAuthDomainDigestClass;
+#define SOUP_TYPE_AUTH_DOMAIN_DIGEST (soup_auth_domain_digest_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupAuthDomainDigest, soup_auth_domain_digest, SOUP, AUTH_DOMAIN_DIGEST, SoupAuthDomain)
#define SOUP_AUTH_DOMAIN_DIGEST_AUTH_CALLBACK "auth-callback"
#define SOUP_AUTH_DOMAIN_DIGEST_AUTH_DATA "auth-data"
SOUP_AVAILABLE_IN_2_4
-GType soup_auth_domain_digest_get_type (void);
-
-SOUP_AVAILABLE_IN_2_4
SoupAuthDomain *soup_auth_domain_digest_new (const char *optname1,
...) G_GNUC_NULL_TERMINATED;
@@ -59,5 +37,3 @@ char *soup_auth_domain_digest_encode_password (const char *username,
const char *password);
G_END_DECLS
-
-#endif /* __SOUP_AUTH_DOMAIN_DIGEST_H__ */
diff --git a/libsoup/auth/soup-auth-domain.h b/libsoup/auth/soup-auth-domain.h
index 0fdbbb29..397dc53b 100644
--- a/libsoup/auth/soup-auth-domain.h
+++ b/libsoup/auth/soup-auth-domain.h
@@ -3,26 +3,17 @@
* Copyright (C) 2007 Novell, Inc.
*/
-#ifndef __SOUP_AUTH_DOMAIN_H__
-#define __SOUP_AUTH_DOMAIN_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_AUTH_DOMAIN (soup_auth_domain_get_type ())
-#define SOUP_AUTH_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomain))
-#define SOUP_AUTH_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomainClass))
-#define SOUP_IS_AUTH_DOMAIN(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN))
-#define SOUP_IS_AUTH_DOMAIN_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_AUTH_DOMAIN))
-#define SOUP_AUTH_DOMAIN_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_DOMAIN, SoupAuthDomainClass))
-
-struct _SoupAuthDomain {
- GObject parent;
-
-};
+#define SOUP_TYPE_AUTH_DOMAIN (soup_auth_domain_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_DERIVABLE_TYPE (SoupAuthDomain, soup_auth_domain, SOUP, AUTH_DOMAIN, GObject)
-typedef struct {
+struct _SoupAuthDomainClass {
GObjectClass parent_class;
char * (*accepts) (SoupAuthDomain *domain,
@@ -34,12 +25,8 @@ typedef struct {
SoupMessage *msg,
const char *username,
const char *password);
-
- /* Padding for future expansion */
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupAuthDomainClass;
+ gpointer padding[6];
+};
#define SOUP_AUTH_DOMAIN_REALM "realm"
#define SOUP_AUTH_DOMAIN_PROXY "proxy"
@@ -60,9 +47,6 @@ typedef gboolean (*SoupAuthDomainGenericAuthCallback) (SoupAuthDomain *domain,
gpointer user_data);
SOUP_AVAILABLE_IN_2_4
-GType soup_auth_domain_get_type (void);
-
-SOUP_AVAILABLE_IN_2_4
void soup_auth_domain_add_path (SoupAuthDomain *domain,
const char *path);
SOUP_AVAILABLE_IN_2_4
@@ -106,5 +90,3 @@ gboolean soup_auth_domain_try_generic_auth_callback (SoupAuthDomain *domain,
const char *username);
G_END_DECLS
-
-#endif /* __SOUP_AUTH_DOMAIN_H__ */
diff --git a/libsoup/auth/soup-auth-manager.c b/libsoup/auth/soup-auth-manager.c
index 3b9e2b6b..225b85d9 100644
--- a/libsoup/auth/soup-auth-manager.c
+++ b/libsoup/auth/soup-auth-manager.c
@@ -61,7 +61,7 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
-struct SoupAuthManagerPrivate {
+typedef struct {
SoupSession *session;
GPtrArray *auth_types;
gboolean auto_ntlm;
@@ -69,7 +69,7 @@ struct SoupAuthManagerPrivate {
GMutex lock;
SoupAuth *proxy_auth;
GHashTable *auth_hosts;
-};
+} SoupAuthManagerPrivate;
typedef struct {
SoupURI *uri;
@@ -90,9 +90,7 @@ static SoupAuth *record_auth_for_uri (SoupAuthManagerPrivate *priv,
static void
soup_auth_manager_init (SoupAuthManager *manager)
{
- SoupAuthManagerPrivate *priv;
-
- priv = manager->priv = soup_auth_manager_get_instance_private (manager);
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
priv->auth_types = g_ptr_array_new_with_free_func ((GDestroyNotify)g_type_class_unref);
priv->auth_hosts = g_hash_table_new_full (soup_uri_host_hash,
@@ -105,7 +103,7 @@ soup_auth_manager_init (SoupAuthManager *manager)
static void
soup_auth_manager_finalize (GObject *object)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (object)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private ((SoupAuthManager*)object);
g_ptr_array_free (priv->auth_types, TRUE);
@@ -165,7 +163,7 @@ auth_type_compare_func (gconstpointer a, gconstpointer b)
static gboolean
soup_auth_manager_add_feature (SoupSessionFeature *feature, GType type)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (feature)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private ((SoupAuthManager*)feature);
SoupAuthClass *auth_class;
if (!g_type_is_a (type, SOUP_TYPE_AUTH))
@@ -188,7 +186,7 @@ soup_auth_manager_add_feature (SoupSessionFeature *feature, GType type)
static gboolean
soup_auth_manager_remove_feature (SoupSessionFeature *feature, GType type)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (feature)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private ((SoupAuthManager*)feature);
SoupAuthClass *auth_class;
guint i;
@@ -213,7 +211,7 @@ soup_auth_manager_remove_feature (SoupSessionFeature *feature, GType type)
static gboolean
soup_auth_manager_has_feature (SoupSessionFeature *feature, GType type)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (feature)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private ((SoupAuthManager*)feature);
SoupAuthClass *auth_class;
guint i;
@@ -231,7 +229,7 @@ soup_auth_manager_has_feature (SoupSessionFeature *feature, GType type)
static void
soup_auth_manager_attach (SoupSessionFeature *feature, SoupSession *session)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (feature)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private ((SoupAuthManager*)feature);
/* FIXME: should support multiple sessions */
priv->session = session;
@@ -518,7 +516,7 @@ authenticate_auth (SoupAuthManager *manager, SoupAuth *auth,
SoupMessage *msg, gboolean prior_auth_failed,
gboolean proxy, gboolean can_interact)
{
- SoupAuthManagerPrivate *priv = manager->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupURI *uri;
if (!soup_auth_can_authenticate (auth))
@@ -607,7 +605,7 @@ record_auth_for_uri (SoupAuthManagerPrivate *priv, SoupURI *uri,
static void
auth_got_headers (SoupMessage *msg, gpointer manager)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (manager)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupAuth *auth, *prior_auth;
gboolean prior_auth_failed = FALSE;
@@ -647,7 +645,7 @@ auth_got_headers (SoupMessage *msg, gpointer manager)
static void
auth_got_body (SoupMessage *msg, gpointer manager)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (manager)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupAuth *auth;
g_mutex_lock (&priv->lock);
@@ -674,7 +672,7 @@ auth_got_body (SoupMessage *msg, gpointer manager)
static void
proxy_auth_got_headers (SoupMessage *msg, gpointer manager)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (manager)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupAuth *auth = NULL, *prior_auth;
gboolean prior_auth_failed = FALSE;
@@ -711,7 +709,7 @@ proxy_auth_got_headers (SoupMessage *msg, gpointer manager)
static void
proxy_auth_got_body (SoupMessage *msg, gpointer manager)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (manager)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupAuth *auth;
g_mutex_lock (&priv->lock);
@@ -732,7 +730,7 @@ proxy_auth_got_body (SoupMessage *msg, gpointer manager)
static void
auth_msg_starting (SoupMessage *msg, gpointer manager)
{
- SoupAuthManagerPrivate *priv = SOUP_AUTH_MANAGER (manager)->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
SoupAuth *auth;
if (soup_message_get_flags (msg) & SOUP_MESSAGE_DO_NOT_USE_AUTH_CACHE)
@@ -818,7 +816,7 @@ soup_auth_manager_use_auth (SoupAuthManager *manager,
SoupURI *uri,
SoupAuth *auth)
{
- SoupAuthManagerPrivate *priv = manager->priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
g_mutex_lock (&priv->lock);
record_auth_for_uri (priv, uri, auth, FALSE);
@@ -836,11 +834,10 @@ soup_auth_manager_use_auth (SoupAuthManager *manager,
void
soup_auth_manager_clear_cached_credentials (SoupAuthManager *manager)
{
- SoupAuthManagerPrivate *priv;
+ SoupAuthManagerPrivate *priv = soup_auth_manager_get_instance_private (manager);
g_return_if_fail (SOUP_IS_AUTH_MANAGER (manager));
- priv = manager->priv;
g_mutex_lock (&priv->lock);
g_hash_table_remove_all (priv->auth_hosts);
g_mutex_unlock (&priv->lock);
diff --git a/libsoup/auth/soup-auth-manager.h b/libsoup/auth/soup-auth-manager.h
index cf38936a..c17c921c 100644
--- a/libsoup/auth/soup-auth-manager.h
+++ b/libsoup/auth/soup-auth-manager.h
@@ -3,38 +3,24 @@
* Copyright (C) 2007 Red Hat, Inc.
*/
-#ifndef __SOUP_AUTH_MANAGER_H__
-#define __SOUP_AUTH_MANAGER_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-auth.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_AUTH_MANAGER (soup_auth_manager_get_type ())
-#define SOUP_AUTH_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_AUTH_MANAGER, SoupAuthManager))
-#define SOUP_AUTH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_MANAGER, SoupAuthManagerClass))
-#define SOUP_IS_AUTH_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_AUTH_MANAGER))
-#define SOUP_IS_AUTH_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_AUTH_MANAGER))
-#define SOUP_AUTH_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_MANAGER, SoupAuthManagerClass))
-
-typedef struct SoupAuthManagerPrivate SoupAuthManagerPrivate;
-
-typedef struct {
- GObject parent;
-
- SoupAuthManagerPrivate *priv;
-} SoupAuthManager;
+#define SOUP_TYPE_AUTH_MANAGER (soup_auth_manager_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_DERIVABLE_TYPE (SoupAuthManager, soup_auth_manager, SOUP, AUTH_MANAGER, GObject)
-typedef struct {
+struct _SoupAuthManagerClass {
GObjectClass parent_class;
void (*authenticate) (SoupAuthManager *manager, SoupMessage *msg,
SoupAuth *auth, gboolean retrying);
-} SoupAuthManagerClass;
-
-SOUP_AVAILABLE_IN_2_4
-GType soup_auth_manager_get_type (void);
+ gpointer padding[4];
+};
SOUP_AVAILABLE_IN_2_4
void soup_auth_manager_use_auth (SoupAuthManager *manager,
@@ -45,5 +31,3 @@ SOUP_AVAILABLE_IN_2_58
void soup_auth_manager_clear_cached_credentials (SoupAuthManager *manager);
G_END_DECLS
-
-#endif /* __SOUP_AUTH_MANAGER_H__ */
diff --git a/libsoup/auth/soup-auth-negotiate.c b/libsoup/auth/soup-auth-negotiate.c
index 1ceac3b0..de4a778d 100644
--- a/libsoup/auth/soup-auth-negotiate.c
+++ b/libsoup/auth/soup-auth-negotiate.c
@@ -66,6 +66,11 @@ typedef struct {
SoupNegotiateState state;
} SoupNegotiateConnectionState;
+
+struct _SoupAuthNegotiate {
+ SoupConnectionAuth parent;
+};
+
typedef struct {
gboolean is_authenticated;
} SoupAuthNegotiatePrivate;
diff --git a/libsoup/auth/soup-auth-negotiate.h b/libsoup/auth/soup-auth-negotiate.h
index 5c3916bf..ffcda002 100644
--- a/libsoup/auth/soup-auth-negotiate.h
+++ b/libsoup/auth/soup-auth-negotiate.h
@@ -4,25 +4,14 @@
* Copyright (C) 2016 Red Hat, Inc.
*/
-#ifndef __SOUP_AUTH_NEGOTIATE_H__
-#define __SOUP_AUTH_NEGOTIATE_H__ 1
+#pragma once
#include "soup-connection-auth.h"
-#define SOUP_AUTH_NEGOTIATE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_AUTH_NEGOTIATE, SoupAuthNegotiate))
-#define SOUP_AUTH_NEGOTIATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_NEGOTIATE, SoupAuthNegotiateClass))
-#define SOUP_IS_AUTH_NEGOTIATE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_AUTH_NEGOTIATE))
-#define SOUP_IS_AUTH_NEGOTIATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_AUTH_NEGOTIATE))
-#define SOUP_AUTH_NEGOTIATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_NEGOTIATE, SoupAuthNegotiateClass))
+G_BEGIN_DECLS
-typedef struct {
- SoupConnectionAuth parent;
+#define SOUP_TYPE_AUTH_NEGOTIATE (soup_auth_negotiate_get_type())
+SOUP_AVAILABLE_IN_2_54
+G_DECLARE_FINAL_TYPE (SoupAuthNegotiate, soup_auth_negotiate, SOUP, AUTH_NEGOTIATE, SoupConnectionAuth)
-} SoupAuthNegotiate;
-
-typedef struct {
- SoupConnectionAuthClass parent_class;
-
-} SoupAuthNegotiateClass;
-
-#endif /* __SOUP_AUTH_NEGOTIATE_H__ */
+G_END_DECLS
diff --git a/libsoup/auth/soup-auth-ntlm.c b/libsoup/auth/soup-auth-ntlm.c
index 2d078461..7a9b7ac3 100644
--- a/libsoup/auth/soup-auth-ntlm.c
+++ b/libsoup/auth/soup-auth-ntlm.c
@@ -69,6 +69,10 @@ typedef enum {
SOUP_NTLM_PASSWORD_REJECTED
} SoupNTLMPasswordState;
+struct _SoupAuthNTLM {
+ SoupConnectionAuth parent;
+};
+
typedef struct {
char *username, *domain;
guchar nt_hash[21], lm_hash[21];
diff --git a/libsoup/auth/soup-auth-ntlm.h b/libsoup/auth/soup-auth-ntlm.h
index ef07353b..1c022686 100644
--- a/libsoup/auth/soup-auth-ntlm.h
+++ b/libsoup/auth/soup-auth-ntlm.h
@@ -1,27 +1,16 @@
-/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-ntlm-offset: 8 -*- */
/*
* Copyright (C) 2007 Red Hat, Inc.
*/
-#ifndef __SOUP_AUTH_NTLM_H__
-#define __SOUP_AUTH_NTLM_H__ 1
+#pragma once
#include "soup-connection-auth.h"
-#define SOUP_AUTH_NTLM(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_AUTH_NTLM, SoupAuthNTLM))
-#define SOUP_AUTH_NTLM_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH_NTLM, SoupAuthNTLMClass))
-#define SOUP_IS_AUTH_NTLM(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_AUTH_NTLM))
-#define SOUP_IS_AUTH_NTLM_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_AUTH_NTLM))
-#define SOUP_AUTH_NTLM_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH_NTLM, SoupAuthNTLMClass))
+G_BEGIN_DECLS
-typedef struct {
- SoupConnectionAuth parent;
+#define SOUP_TYPE_AUTH_NTLM (soup_auth_ntlm_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupAuthNTLM, soup_auth_ntlm, SOUP, AUTH_NTLM, SoupConnectionAuth)
-} SoupAuthNTLM;
-
-typedef struct {
- SoupConnectionAuthClass parent_class;
-
-} SoupAuthNTLMClass;
-
-#endif /* __SOUP_AUTH_NTLM_H__ */
+G_END_DECLS
diff --git a/libsoup/auth/soup-auth.c b/libsoup/auth/soup-auth.c
index 2ba75e23..7e5a5f70 100644
--- a/libsoup/auth/soup-auth.c
+++ b/libsoup/auth/soup-auth.c
@@ -35,8 +35,9 @@
**/
typedef struct {
- gboolean proxy;
+ char *realm;
char *host;
+ gboolean proxy;
} SoupAuthPrivate;
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (SoupAuth, soup_auth, G_TYPE_OBJECT)
@@ -64,7 +65,7 @@ soup_auth_finalize (GObject *object)
SoupAuth *auth = SOUP_AUTH (object);
SoupAuthPrivate *priv = soup_auth_get_instance_private (auth);
- g_free (auth->realm);
+ g_free (priv->realm);
g_free (priv->host);
G_OBJECT_CLASS (soup_auth_parent_class)->finalize (object);
@@ -79,8 +80,8 @@ soup_auth_set_property (GObject *object, guint prop_id,
switch (prop_id) {
case PROP_REALM:
- g_free (auth->realm);
- auth->realm = g_value_dup_string (value);
+ g_free (priv->realm);
+ priv->realm = g_value_dup_string (value);
break;
case PROP_HOST:
g_free (priv->host);
@@ -234,7 +235,7 @@ soup_auth_new (GType type, SoupMessage *msg, const char *auth_header)
{
SoupAuth *auth;
GHashTable *params;
- const char *scheme, *realm;
+ const char *scheme;
g_return_val_if_fail (g_type_is_a (type, SOUP_TYPE_AUTH), NULL);
g_return_val_if_fail (SOUP_IS_MESSAGE (msg), NULL);
@@ -245,6 +246,8 @@ soup_auth_new (GType type, SoupMessage *msg, const char *auth_header)
SOUP_AUTH_HOST, soup_message_get_uri (msg)->host,
NULL);
+ SoupAuthPrivate *priv = soup_auth_get_instance_private (auth);
+
scheme = soup_auth_get_scheme_name (auth);
if (g_ascii_strncasecmp (auth_header, scheme, strlen (scheme)) != 0) {
g_object_unref (auth);
@@ -255,9 +258,7 @@ soup_auth_new (GType type, SoupMessage *msg, const char *auth_header)
if (!params)
params = g_hash_table_new (NULL, NULL);
- realm = g_hash_table_lookup (params, "realm");
- if (realm)
- auth->realm = g_strdup (realm);
+ priv->realm = g_strdup (g_hash_table_lookup (params, "realm"));
if (!SOUP_AUTH_GET_CLASS (auth)->update (auth, msg, params)) {
g_object_unref (auth);
@@ -287,6 +288,7 @@ soup_auth_update (SoupAuth *auth, SoupMessage *msg, const char *auth_header)
GHashTable *params;
const char *scheme, *realm;
gboolean was_authenticated, success;
+ SoupAuthPrivate *priv = soup_auth_get_instance_private (auth);
g_return_val_if_fail (SOUP_IS_AUTH (auth), FALSE);
g_return_val_if_fail (SOUP_IS_MESSAGE (msg), FALSE);
@@ -301,7 +303,7 @@ soup_auth_update (SoupAuth *auth, SoupMessage *msg, const char *auth_header)
params = g_hash_table_new (NULL, NULL);
realm = g_hash_table_lookup (params, "realm");
- if (realm && auth->realm && strcmp (realm, auth->realm) != 0) {
+ if (realm && priv->realm && strcmp (realm, priv->realm) != 0) {
soup_header_free_param_list (params);
return FALSE;
}
@@ -405,9 +407,11 @@ soup_auth_get_host (SoupAuth *auth)
const char *
soup_auth_get_realm (SoupAuth *auth)
{
+ SoupAuthPrivate *priv = soup_auth_get_instance_private (auth);
+
g_return_val_if_fail (SOUP_IS_AUTH (auth), NULL);
- return auth->realm;
+ return priv->realm;
}
/**
@@ -424,6 +428,8 @@ soup_auth_get_realm (SoupAuth *auth)
char *
soup_auth_get_info (SoupAuth *auth)
{
+ SoupAuthPrivate *priv = soup_auth_get_instance_private (auth);
+
g_return_val_if_fail (SOUP_IS_AUTH (auth), NULL);
if (SOUP_IS_CONNECTION_AUTH (auth))
@@ -431,7 +437,7 @@ soup_auth_get_info (SoupAuth *auth)
else {
return g_strdup_printf ("%s:%s",
SOUP_AUTH_GET_CLASS (auth)->scheme_name,
- auth->realm);
+ priv->realm);
}
}
diff --git a/libsoup/auth/soup-auth.h b/libsoup/auth/soup-auth.h
index 987946f9..c9b78933 100644
--- a/libsoup/auth/soup-auth.h
+++ b/libsoup/auth/soup-auth.h
@@ -3,28 +3,18 @@
* Copyright (C) 2001-2003, Ximian, Inc.
*/
-#ifndef __SOUP_AUTH_H__
-#define __SOUP_AUTH_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-headers.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_AUTH (soup_auth_get_type ())
-#define SOUP_AUTH(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_AUTH, SoupAuth))
-#define SOUP_AUTH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_AUTH, SoupAuthClass))
-#define SOUP_IS_AUTH(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_AUTH))
-#define SOUP_IS_AUTH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_AUTH))
-#define SOUP_AUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_AUTH, SoupAuthClass))
-
-struct _SoupAuth {
- GObject parent;
-
- char *realm;
-};
+#define SOUP_TYPE_AUTH (soup_auth_get_type())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_DERIVABLE_TYPE (SoupAuth, soup_auth, SOUP, AUTH, GObject)
-typedef struct {
+struct _SoupAuthClass {
GObjectClass parent_class;
const char *scheme_name;
@@ -50,10 +40,8 @@ typedef struct {
gboolean (*can_authenticate) (SoupAuth *auth);
- /* Padding for future expansion */
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupAuthClass;
+ gpointer padding[6];
+};
#define SOUP_AUTH_SCHEME_NAME "scheme-name"
#define SOUP_AUTH_REALM "realm"
@@ -62,9 +50,6 @@ typedef struct {
#define SOUP_AUTH_IS_AUTHENTICATED "is-authenticated"
SOUP_AVAILABLE_IN_2_4
-GType soup_auth_get_type (void);
-
-SOUP_AVAILABLE_IN_2_4
SoupAuth *soup_auth_new (GType type,
SoupMessage *msg,
const char *auth_header);
@@ -107,24 +92,7 @@ SOUP_AVAILABLE_IN_2_4
void soup_auth_free_protection_space (SoupAuth *auth,
GSList *space);
-/* The actual auth types, which can be added/removed as features */
-
-#define SOUP_TYPE_AUTH_BASIC (soup_auth_basic_get_type ())
-SOUP_AVAILABLE_IN_2_4
-GType soup_auth_basic_get_type (void);
-#define SOUP_TYPE_AUTH_DIGEST (soup_auth_digest_get_type ())
-SOUP_AVAILABLE_IN_2_4
-GType soup_auth_digest_get_type (void);
-#define SOUP_TYPE_AUTH_NTLM (soup_auth_ntlm_get_type ())
-SOUP_AVAILABLE_IN_2_4
-GType soup_auth_ntlm_get_type (void);
-#define SOUP_TYPE_AUTH_NEGOTIATE (soup_auth_negotiate_get_type ())
-SOUP_AVAILABLE_IN_2_54
-GType soup_auth_negotiate_get_type (void);
-
SOUP_AVAILABLE_IN_2_54
gboolean soup_auth_negotiate_supported (void);
G_END_DECLS
-
-#endif /* __SOUP_AUTH_H__ */
diff --git a/libsoup/auth/soup-connection-auth.c b/libsoup/auth/soup-connection-auth.c
index f55cfe6b..7689b109 100644
--- a/libsoup/auth/soup-connection-auth.c
+++ b/libsoup/auth/soup-connection-auth.c
@@ -18,18 +18,18 @@
#include "soup-connection.h"
#include "soup-message-private.h"
-struct SoupConnectionAuthPrivate {
+typedef struct {
GHashTable *conns;
-};
+} SoupConnectionAuthPrivate;
G_DEFINE_ABSTRACT_TYPE_WITH_PRIVATE (SoupConnectionAuth, soup_connection_auth, SOUP_TYPE_AUTH)
static void
soup_connection_auth_init (SoupConnectionAuth *auth)
{
- auth->priv = soup_connection_auth_get_instance_private (auth);
+ SoupConnectionAuthPrivate *priv = soup_connection_auth_get_instance_private (auth);
- auth->priv->conns = g_hash_table_new (NULL, NULL);
+ priv->conns = g_hash_table_new (NULL, NULL);
}
static void connection_disconnected (SoupConnection *conn, gpointer user_data);
@@ -47,10 +47,11 @@ static void
connection_disconnected (SoupConnection *conn, gpointer user_data)
{
SoupConnectionAuth *auth = user_data;
+ SoupConnectionAuthPrivate *priv = soup_connection_auth_get_instance_private (auth);
gpointer state;
- state = g_hash_table_lookup (auth->priv->conns, conn);
- g_hash_table_remove (auth->priv->conns, conn);
+ state = g_hash_table_lookup (priv->conns, conn);
+ g_hash_table_remove (priv->conns, conn);
soup_connection_auth_free_connection_state (auth, conn, state);
}
@@ -58,15 +59,16 @@ static void
soup_connection_auth_finalize (GObject *object)
{
SoupConnectionAuth *auth = SOUP_CONNECTION_AUTH (object);
+ SoupConnectionAuthPrivate *priv = soup_connection_auth_get_instance_private (auth);
GHashTableIter iter;
gpointer conn, state;
- g_hash_table_iter_init (&iter, auth->priv->conns);
+ g_hash_table_iter_init (&iter, priv->conns);
while (g_hash_table_iter_next (&iter, &conn, &state)) {
soup_connection_auth_free_connection_state (auth, conn, state);
g_hash_table_iter_remove (&iter);
}
- g_hash_table_destroy (auth->priv->conns);
+ g_hash_table_destroy (priv->conns);
G_OBJECT_CLASS (soup_connection_auth_parent_class)->finalize (object);
}
@@ -90,6 +92,7 @@ gpointer
soup_connection_auth_get_connection_state_for_message (SoupConnectionAuth *auth,
SoupMessage *msg)
{
+ SoupConnectionAuthPrivate *priv = soup_connection_auth_get_instance_private (auth);
SoupConnection *conn;
gpointer state;
@@ -97,7 +100,7 @@ soup_connection_auth_get_connection_state_for_message (SoupConnectionAuth *auth,
g_return_val_if_fail (SOUP_IS_MESSAGE (msg), NULL);
conn = soup_message_get_connection (msg);
- state = g_hash_table_lookup (auth->priv->conns, conn);
+ state = g_hash_table_lookup (priv->conns, conn);
if (state)
return state;
@@ -107,7 +110,7 @@ soup_connection_auth_get_connection_state_for_message (SoupConnectionAuth *auth,
G_CALLBACK (connection_disconnected), auth);
}
- g_hash_table_insert (auth->priv->conns, conn, state);
+ g_hash_table_insert (priv->conns, conn, state);
return state;
}
diff --git a/libsoup/auth/soup-connection-auth.h b/libsoup/auth/soup-connection-auth.h
index b7ef16fe..c1c922c4 100644
--- a/libsoup/auth/soup-connection-auth.h
+++ b/libsoup/auth/soup-connection-auth.h
@@ -3,29 +3,17 @@
* Copyright (C) 2010 Red Hat, Inc.
*/
-#ifndef __SOUP_CONNECTION_AUTH_H__
-#define __SOUP_CONNECTION_AUTH_H__ 1
+#pragma once
#include "soup-auth.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CONNECTION_AUTH (soup_connection_auth_get_type ())
-#define SOUP_CONNECTION_AUTH(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_CONNECTION_AUTH, SoupConnectionAuth))
-#define SOUP_CONNECTION_AUTH_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CONNECTION_AUTH, SoupConnectionAuthClass))
-#define SOUP_IS_CONNECTION_AUTH(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_CONNECTION_AUTH))
-#define SOUP_IS_CONNECTION_AUTH_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_CONNECTION_AUTH))
-#define SOUP_CONNECTION_AUTH_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CONNECTION_AUTH, SoupConnectionAuthClass))
+#define SOUP_TYPE_CONNECTION_AUTH (soup_connection_auth_get_type ())
+_SOUP_EXTERN
+G_DECLARE_DERIVABLE_TYPE (SoupConnectionAuth, soup_connection_auth, SOUP, CONNECTION_AUTH, SoupAuth)
-typedef struct SoupConnectionAuthPrivate SoupConnectionAuthPrivate;
-
-typedef struct {
- SoupAuth parent;
-
- SoupConnectionAuthPrivate *priv;
-} SoupConnectionAuth;
-
-typedef struct {
+struct _SoupConnectionAuthClass {
SoupAuthClass parent_class;
gpointer (*create_connection_state) (SoupConnectionAuth *auth);
@@ -42,14 +30,10 @@ typedef struct {
gboolean (*is_connection_ready) (SoupConnectionAuth *auth,
SoupMessage *msg,
gpointer conn);
-} SoupConnectionAuthClass;
+};
-GType soup_connection_auth_get_type (void);
-SOUP_AVAILABLE_IN_2_58
gpointer soup_connection_auth_get_connection_state_for_message
(SoupConnectionAuth *auth,
SoupMessage *message);
G_END_DECLS
-
-#endif /* __SOUP_CONNECTION_AUTH_H__ */
diff --git a/libsoup/cache/soup-cache-private.h b/libsoup/cache/soup-cache-private.h
index 9760def9..40a83055 100644
--- a/libsoup/cache/soup-cache-private.h
+++ b/libsoup/cache/soup-cache-private.h
@@ -20,8 +20,7 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_CACHE_PRIVATE_H__
-#define __SOUP_CACHE_PRIVATE_H__ 1
+#pragma once
#include "cache/soup-cache.h"
#include "soup-message.h"
@@ -42,5 +41,3 @@ void soup_cache_update_from_conditional_request (SoupCache *cach
SoupMessage *msg);
G_END_DECLS
-
-#endif /* __SOUP_CACHE_PRIVATE_H__ */
diff --git a/libsoup/cache/soup-cache.c b/libsoup/cache/soup-cache.c
index bbdb4b4c..09c71a44 100644
--- a/libsoup/cache/soup-cache.c
+++ b/libsoup/cache/soup-cache.c
@@ -110,7 +110,7 @@ typedef struct _SoupCacheEntry {
guint16 status_code;
} SoupCacheEntry;
-struct _SoupCachePrivate {
+typedef struct {
char *cache_dir;
GHashTable *cache;
guint n_pending;
@@ -120,7 +120,7 @@ struct _SoupCachePrivate {
guint max_size;
guint max_entry_data_size; /* Computed value. Here for performance reasons */
GList *lru_start;
-};
+} SoupCachePrivate;
enum {
PROP_0,
@@ -142,7 +142,8 @@ static gboolean cache_accepts_entries_of_size (SoupCache *cache, guint length_to
static GFile *
get_file_from_entry (SoupCache *cache, SoupCacheEntry *entry)
{
- char *filename = g_strdup_printf ("%s%s%u", cache->priv->cache_dir,
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
+ char *filename = g_strdup_printf ("%s%s%u", priv->cache_dir,
G_DIR_SEPARATOR_S, (guint) entry->key);
GFile *file = g_file_new_for_path (filename);
g_free (filename);
@@ -153,6 +154,7 @@ get_file_from_entry (SoupCache *cache, SoupCacheEntry *entry)
static SoupCacheability
get_cacheability (SoupCache *cache, SoupMessage *msg)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheability cacheability;
const char *cache_control, *content_type;
gboolean has_max_age = FALSE;
@@ -174,7 +176,6 @@ get_cacheability (SoupCache *cache, SoupMessage *msg)
cache_control = soup_message_headers_get_list (msg->response_headers, "Cache-Control");
if (cache_control && *cache_control) {
GHashTable *hash;
- SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
hash = soup_header_parse_param_list (cache_control);
@@ -507,6 +508,7 @@ soup_cache_entry_new (SoupCache *cache, SoupMessage *msg, time_t request_time, t
static gboolean
soup_cache_entry_remove (SoupCache *cache, SoupCacheEntry *entry, gboolean purge)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
GList *lru_item;
if (entry->dirty) {
@@ -515,19 +517,19 @@ soup_cache_entry_remove (SoupCache *cache, SoupCacheEntry *entry, gboolean purge
}
g_assert (!entry->dirty);
- g_assert (g_list_length (cache->priv->lru_start) == g_hash_table_size (cache->priv->cache));
+ g_assert (g_list_length (priv->lru_start) == g_hash_table_size (priv->cache));
- if (!g_hash_table_remove (cache->priv->cache, GUINT_TO_POINTER (entry->key)))
+ if (!g_hash_table_remove (priv->cache, GUINT_TO_POINTER (entry->key)))
return FALSE;
/* Remove from LRU */
- lru_item = g_list_find (cache->priv->lru_start, entry);
- cache->priv->lru_start = g_list_delete_link (cache->priv->lru_start, lru_item);
+ lru_item = g_list_find (priv->lru_start, entry);
+ priv->lru_start = g_list_delete_link (priv->lru_start, lru_item);
/* Adjust cache size */
- cache->priv->size -= entry->length;
+ priv->size -= entry->length;
- g_assert (g_list_length (cache->priv->lru_start) == g_hash_table_size (cache->priv->cache));
+ g_assert (g_list_length (priv->lru_start) == g_hash_table_size (priv->cache));
/* Free resources */
if (purge) {
@@ -572,16 +574,18 @@ lru_compare_func (gconstpointer a, gconstpointer b)
static gboolean
cache_accepts_entries_of_size (SoupCache *cache, guint length_to_add)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
/* We could add here some more heuristics. TODO: review how
this is done by other HTTP caches */
- return length_to_add <= cache->priv->max_entry_data_size;
+ return length_to_add <= priv->max_entry_data_size;
}
static void
make_room_for_new_entry (SoupCache *cache, guint length_to_add)
{
- GList *lru_entry = cache->priv->lru_start;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
+ GList *lru_entry = priv->lru_start;
/* Check that there is enough room for the new entry. This is
an approximation as we're not working out the size of the
@@ -589,14 +593,14 @@ make_room_for_new_entry (SoupCache *cache, guint length_to_add)
reasons. TODO: check if that would be really that expensive */
while (lru_entry &&
- (length_to_add + cache->priv->size > cache->priv->max_size)) {
+ (length_to_add + priv->size > priv->max_size)) {
SoupCacheEntry *old_entry = (SoupCacheEntry *)lru_entry->data;
/* Discard entries. Once cancelled resources will be
* freed in close_ready_cb
*/
if (soup_cache_entry_remove (cache, old_entry, TRUE))
- lru_entry = cache->priv->lru_start;
+ lru_entry = priv->lru_start;
else
lru_entry = g_list_next (lru_entry);
}
@@ -607,6 +611,7 @@ soup_cache_entry_insert (SoupCache *cache,
SoupCacheEntry *entry,
gboolean sort)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
guint length_to_add = 0;
SoupCacheEntry *old_entry;
@@ -626,24 +631,24 @@ soup_cache_entry_insert (SoupCache *cache,
}
/* Remove any previous entry */
- if ((old_entry = g_hash_table_lookup (cache->priv->cache, GUINT_TO_POINTER (entry->key))) != NULL) {
+ if ((old_entry = g_hash_table_lookup (priv->cache, GUINT_TO_POINTER (entry->key))) != NULL) {
if (!soup_cache_entry_remove (cache, old_entry, TRUE))
return FALSE;
}
/* Add to hash table */
- g_hash_table_insert (cache->priv->cache, GUINT_TO_POINTER (entry->key), entry);
+ g_hash_table_insert (priv->cache, GUINT_TO_POINTER (entry->key), entry);
/* Compute new cache size */
- cache->priv->size += length_to_add;
+ priv->size += length_to_add;
/* Update LRU */
if (sort)
- cache->priv->lru_start = g_list_insert_sorted (cache->priv->lru_start, entry, lru_compare_func);
+ priv->lru_start = g_list_insert_sorted (priv->lru_start, entry, lru_compare_func);
else
- cache->priv->lru_start = g_list_prepend (cache->priv->lru_start, entry);
+ priv->lru_start = g_list_prepend (priv->lru_start, entry);
- g_assert (g_list_length (cache->priv->lru_start) == g_hash_table_size (cache->priv->cache));
+ g_assert (g_list_length (priv->lru_start) == g_hash_table_size (priv->cache));
return TRUE;
}
@@ -652,6 +657,7 @@ static SoupCacheEntry*
soup_cache_entry_lookup (SoupCache *cache,
SoupMessage *msg)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry;
guint32 key;
char *uri = NULL;
@@ -659,7 +665,7 @@ soup_cache_entry_lookup (SoupCache *cache,
uri = soup_uri_to_string (soup_message_get_uri (msg), FALSE);
key = get_cache_key_from_uri ((const char *) uri);
- entry = g_hash_table_lookup (cache->priv->cache, GUINT_TO_POINTER (key));
+ entry = g_hash_table_lookup (priv->cache, GUINT_TO_POINTER (key));
if (entry != NULL && (strcmp (entry->uri, uri) != 0))
entry = NULL;
@@ -671,6 +677,7 @@ soup_cache_entry_lookup (SoupCache *cache,
GInputStream *
soup_cache_send_response (SoupCache *cache, SoupMessage *msg)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry;
GInputStream *file_stream, *body_stream, *cache_stream, *client_stream;
GFile *file;
@@ -711,7 +718,7 @@ soup_cache_send_response (SoupCache *cache, SoupMessage *msg)
/* Create the cache stream. */
soup_message_disable_feature (msg, SOUP_TYPE_CACHE);
cache_stream = soup_message_setup_body_istream (body_stream, msg,
- cache->priv->session,
+ priv->session,
SOUP_STAGE_ENTITY_BODY);
g_object_unref (body_stream);
@@ -746,7 +753,8 @@ static void
attach (SoupSessionFeature *feature, SoupSession *session)
{
SoupCache *cache = SOUP_CACHE (feature);
- cache->priv->session = session;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
+ priv->session = session;
soup_cache_default_feature_interface->attach (feature, session);
}
@@ -775,9 +783,10 @@ istream_caching_finished (SoupCacheInputStream *istream,
{
StreamHelper *helper = (StreamHelper *) user_data;
SoupCache *cache = helper->cache;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry = helper->entry;
- --cache->priv->n_pending;
+ --priv->n_pending;
entry->dirty = FALSE;
entry->length = bytes_written;
@@ -786,7 +795,7 @@ istream_caching_finished (SoupCacheInputStream *istream,
if (error) {
/* Update cache size */
if (soup_message_headers_get_encoding (entry->headers) == SOUP_ENCODING_CONTENT_LENGTH)
- cache->priv->size -= soup_message_headers_get_content_length (entry->headers);
+ priv->size -= soup_message_headers_get_content_length (entry->headers);
soup_cache_entry_remove (cache, entry, TRUE);
helper->entry = entry = NULL;
@@ -797,7 +806,7 @@ istream_caching_finished (SoupCacheInputStream *istream,
if (cache_accepts_entries_of_size (cache, entry->length)) {
make_room_for_new_entry (cache, entry->length);
- cache->priv->size += entry->length;
+ priv->size += entry->length;
} else {
soup_cache_entry_remove (cache, entry, TRUE);
helper->entry = entry = NULL;
@@ -816,6 +825,7 @@ soup_cache_content_processor_wrap_input (SoupContentProcessor *processor,
GError **error)
{
SoupCache *cache = (SoupCache*) processor;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry;
SoupCacheability cacheability;
GInputStream *istream;
@@ -868,7 +878,7 @@ soup_cache_content_processor_wrap_input (SoupContentProcessor *processor,
}
entry->cancellable = g_cancellable_new ();
- ++cache->priv->n_pending;
+ ++priv->n_pending;
helper = g_slice_new (StreamHelper);
helper->cache = g_object_ref (cache);
@@ -897,9 +907,7 @@ soup_cache_content_processor_init (SoupContentProcessorInterface *processor_inte
static void
soup_cache_init (SoupCache *cache)
{
- SoupCachePrivate *priv;
-
- priv = cache->priv = soup_cache_get_instance_private (cache);
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
priv->cache = g_hash_table_new (g_direct_hash, g_direct_equal);
/* LRU */
@@ -924,11 +932,9 @@ remove_cache_item (gpointer data,
static void
soup_cache_finalize (GObject *object)
{
- SoupCachePrivate *priv;
+ SoupCachePrivate *priv = soup_cache_get_instance_private ((SoupCache*)object);
GList *entries;
- priv = SOUP_CACHE (object)->priv;
-
/* Cannot use g_hash_table_foreach as callbacks must not modify the hash table */
entries = g_hash_table_get_values (priv->cache);
g_list_foreach (entries, remove_cache_item, object);
@@ -946,7 +952,7 @@ static void
soup_cache_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec)
{
- SoupCachePrivate *priv = SOUP_CACHE (object)->priv;
+ SoupCachePrivate *priv = soup_cache_get_instance_private ((SoupCache*)object);
switch (prop_id) {
case PROP_CACHE_DIR:
@@ -978,7 +984,7 @@ static void
soup_cache_get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
- SoupCachePrivate *priv = SOUP_CACHE (object)->priv;
+ SoupCachePrivate *priv = soup_cache_get_instance_private ((SoupCache*)object);
switch (prop_id) {
case PROP_CACHE_DIR:
@@ -1072,6 +1078,7 @@ soup_cache_new (const char *cache_dir, SoupCacheType cache_type)
SoupCacheResponse
soup_cache_has_response (SoupCache *cache, SoupMessage *msg)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry;
const char *cache_control;
gpointer value;
@@ -1088,13 +1095,13 @@ soup_cache_has_response (SoupCache *cache, SoupMessage *msg)
/* Increase hit count. Take sorting into account */
entry->hits++;
- lru_item = g_list_find (cache->priv->lru_start, entry);
+ lru_item = g_list_find (priv->lru_start, entry);
item = lru_item;
while (item->next && lru_compare_func (item->data, item->next->data) > 0)
item = g_list_next (item);
if (item != lru_item) {
- cache->priv->lru_start = g_list_remove_link (cache->priv->lru_start, lru_item);
+ priv->lru_start = g_list_remove_link (priv->lru_start, lru_item);
item = g_list_insert_sorted (item, lru_item->data, lru_compare_func);
g_list_free (lru_item);
}
@@ -1260,6 +1267,7 @@ force_flush_timeout (gpointer data)
void
soup_cache_flush (SoupCache *cache)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
GMainContext *async_context;
SoupSession *session;
GSource *timeout;
@@ -1267,20 +1275,20 @@ soup_cache_flush (SoupCache *cache)
g_return_if_fail (SOUP_IS_CACHE (cache));
- session = cache->priv->session;
+ session = priv->session;
g_return_if_fail (SOUP_IS_SESSION (session));
async_context = g_main_context_get_thread_default ();
/* We give cache 10 secs to finish */
timeout = soup_add_timeout (async_context, 10000, force_flush_timeout, &forced);
- while (!forced && cache->priv->n_pending > 0)
+ while (!forced && priv->n_pending > 0)
g_main_context_iteration (async_context, FALSE);
if (!forced)
g_source_destroy (timeout);
else
- g_warning ("Cache flush finished despite %d pending requests", cache->priv->n_pending);
+ g_warning ("Cache flush finished despite %d pending requests", priv->n_pending);
}
typedef void (* SoupCacheForeachFileFunc) (SoupCache *cache, const char *name, gpointer user_data);
@@ -1288,9 +1296,9 @@ typedef void (* SoupCacheForeachFileFunc) (SoupCache *cache, const char *name, g
static void
soup_cache_foreach_file (SoupCache *cache, SoupCacheForeachFileFunc func, gpointer user_data)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
GDir *dir;
const char *name;
- SoupCachePrivate *priv = cache->priv;
dir = g_dir_open (priv->cache_dir, 0, NULL);
while ((name = g_dir_read_name (dir))) {
@@ -1312,9 +1320,10 @@ clear_cache_item (gpointer data,
static void
delete_cache_file (SoupCache *cache, const char *name, gpointer user_data)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
gchar *path;
- path = g_build_filename (cache->priv->cache_dir, name, NULL);
+ path = g_build_filename (priv->cache_dir, name, NULL);
g_unlink (path);
g_free (path);
}
@@ -1336,13 +1345,14 @@ clear_cache_files (SoupCache *cache)
void
soup_cache_clear (SoupCache *cache)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
GList *entries;
g_return_if_fail (SOUP_IS_CACHE (cache));
- g_return_if_fail (cache->priv->cache);
+ g_return_if_fail (priv->cache);
/* Cannot use g_hash_table_foreach as callbacks must not modify the hash table */
- entries = g_hash_table_get_values (cache->priv->cache);
+ entries = g_hash_table_get_values (priv->cache);
g_list_foreach (entries, clear_cache_item, cache);
g_list_free (entries);
@@ -1405,13 +1415,14 @@ void
soup_cache_cancel_conditional_request (SoupCache *cache,
SoupMessage *msg)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
SoupCacheEntry *entry;
entry = soup_cache_entry_lookup (cache, msg);
if (entry)
entry->being_validated = FALSE;
- soup_session_cancel_message (cache->priv->session, msg, SOUP_STATUS_CANCELLED);
+ soup_session_cancel_message (priv->session, msg, SOUP_STATUS_CANCELLED);
}
void
@@ -1490,14 +1501,14 @@ soup_cache_dump (SoupCache *cache)
GVariantBuilder entries_builder;
GVariant *cache_variant;
- if (!g_list_length (cache->priv->lru_start))
+ if (!g_list_length (priv->lru_start))
return;
/* Create the builder and iterate over all entries */
g_variant_builder_init (&entries_builder, G_VARIANT_TYPE (SOUP_CACHE_ENTRIES_FORMAT));
g_variant_builder_add (&entries_builder, "q", SOUP_CACHE_CURRENT_VERSION);
g_variant_builder_open (&entries_builder, G_VARIANT_TYPE ("a" SOUP_CACHE_PHEADERS_FORMAT));
- g_list_foreach (cache->priv->lru_start, pack_entry, &entries_builder);
+ g_list_foreach (priv->lru_start, pack_entry, &entries_builder);
g_variant_builder_close (&entries_builder);
/* Serialize and dump */
@@ -1522,9 +1533,10 @@ get_key_from_cache_filename (const char *name)
static void
insert_cache_file (SoupCache *cache, const char *name, GHashTable *leaked_entries)
{
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
gchar *path;
- path = g_build_filename (cache->priv->cache_dir, name, NULL);
+ path = g_build_filename (priv->cache_dir, name, NULL);
if (g_file_test (path, G_FILE_TEST_IS_REGULAR)) {
guint32 key = get_key_from_cache_filename (name);
@@ -1555,7 +1567,7 @@ soup_cache_load (SoupCache *cache)
GVariantIter *entries_iter = NULL, *headers_iter = NULL;
gsize length;
SoupCacheEntry *entry;
- SoupCachePrivate *priv = cache->priv;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
guint16 version, status_code;
GHashTable *leaked_entries = NULL;
GHashTableIter iter;
@@ -1628,7 +1640,7 @@ soup_cache_load (SoupCache *cache)
g_unlink ((char *)value);
g_hash_table_destroy (leaked_entries);
- cache->priv->lru_start = g_list_reverse (cache->priv->lru_start);
+ priv->lru_start = g_list_reverse (priv->lru_start);
/* frees */
g_variant_iter_free (entries_iter);
@@ -1648,8 +1660,9 @@ void
soup_cache_set_max_size (SoupCache *cache,
guint max_size)
{
- cache->priv->max_size = max_size;
- cache->priv->max_entry_data_size = cache->priv->max_size / MAX_ENTRY_DATA_PERCENTAGE;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
+ priv->max_size = max_size;
+ priv->max_entry_data_size = priv->max_size / MAX_ENTRY_DATA_PERCENTAGE;
}
/**
@@ -1665,5 +1678,6 @@ soup_cache_set_max_size (SoupCache *cache,
guint
soup_cache_get_max_size (SoupCache *cache)
{
- return cache->priv->max_size;
+ SoupCachePrivate *priv = soup_cache_get_instance_private (cache);
+ return priv->max_size;
}
diff --git a/libsoup/cache/soup-cache.h b/libsoup/cache/soup-cache.h
index 9386f283..6905634e 100644
--- a/libsoup/cache/soup-cache.h
+++ b/libsoup/cache/soup-cache.h
@@ -20,22 +20,15 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_CACHE_H__
-#define __SOUP_CACHE_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CACHE (soup_cache_get_type ())
-#define SOUP_CACHE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CACHE, SoupCache))
-#define SOUP_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CACHE, SoupCacheClass))
-#define SOUP_IS_CACHE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CACHE))
-#define SOUP_IS_CACHE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_CACHE))
-#define SOUP_CACHE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CACHE, SoupCacheClass))
-
-typedef struct _SoupCache SoupCache;
-typedef struct _SoupCachePrivate SoupCachePrivate;
+#define SOUP_TYPE_CACHE (soup_cache_get_type ())
+SOUP_AVAILABLE_IN_2_34
+G_DECLARE_DERIVABLE_TYPE (SoupCache, soup_cache, SOUP, CACHE, GObject)
typedef enum {
SOUP_CACHE_CACHEABLE = (1 << 0),
@@ -55,27 +48,15 @@ typedef enum {
SOUP_CACHE_SHARED
} SoupCacheType;
-struct _SoupCache {
- GObject parent_instance;
-
- SoupCachePrivate *priv;
-};
-
-typedef struct {
+struct _SoupCacheClass {
GObjectClass parent_class;
/* methods */
SoupCacheability (*get_cacheability) (SoupCache *cache,
SoupMessage *msg);
+ gpointer padding[4];
+};
- /* Padding for future expansion */
- void (*_libsoup_reserved1)(void);
- void (*_libsoup_reserved2)(void);
- void (*_libsoup_reserved3)(void);
-} SoupCacheClass;
-
-SOUP_AVAILABLE_IN_2_34
-GType soup_cache_get_type (void);
SOUP_AVAILABLE_IN_2_34
SoupCache *soup_cache_new (const char *cache_dir,
SoupCacheType cache_type);
@@ -96,6 +77,3 @@ SOUP_AVAILABLE_IN_2_34
guint soup_cache_get_max_size (SoupCache *cache);
G_END_DECLS
-
-#endif /* __SOUP_CACHE_H__ */
-
diff --git a/libsoup/content-sniffer/soup-content-decoder.c b/libsoup/content-sniffer/soup-content-decoder.c
index c0155786..eeb880ff 100644
--- a/libsoup/content-sniffer/soup-content-decoder.c
+++ b/libsoup/content-sniffer/soup-content-decoder.c
@@ -53,10 +53,14 @@
* Since: 2.30
**/
-struct _SoupContentDecoderPrivate {
- GHashTable *decoders;
+struct _SoupContentDecoder {
+ GObject parent;
};
+typedef struct {
+ GHashTable *decoders;
+} SoupContentDecoderPrivate;
+
typedef GConverter * (*SoupContentDecoderCreator) (void);
static void soup_content_decoder_session_feature_init (SoupSessionFeatureInterface *feature_interface, gpointer interface_data);
@@ -75,6 +79,7 @@ G_DEFINE_TYPE_WITH_CODE (SoupContentDecoder, soup_content_decoder, G_TYPE_OBJECT
static GSList *
soup_content_decoder_get_decoders_for_msg (SoupContentDecoder *decoder, SoupMessage *msg)
{
+ SoupContentDecoderPrivate *priv = soup_content_decoder_get_instance_private (decoder);
const char *header;
GSList *encodings, *e, *decoders = NULL;
SoupContentDecoderCreator converter_creator;
@@ -104,14 +109,14 @@ soup_content_decoder_get_decoders_for_msg (SoupContentDecoder *decoder, SoupMess
return NULL;
for (e = encodings; e; e = e->next) {
- if (!g_hash_table_lookup (decoder->priv->decoders, e->data)) {
+ if (!g_hash_table_lookup (priv->decoders, e->data)) {
soup_header_free_list (encodings);
return NULL;
}
}
for (e = encodings; e; e = e->next) {
- converter_creator = g_hash_table_lookup (decoder->priv->decoders, e->data);
+ converter_creator = g_hash_table_lookup (priv->decoders, e->data);
converter = converter_creator ();
/* Content-Encoding lists the codings in the order
@@ -204,18 +209,18 @@ brotli_decoder_creator (void)
static void
soup_content_decoder_init (SoupContentDecoder *decoder)
{
- decoder->priv = soup_content_decoder_get_instance_private (decoder);
+ SoupContentDecoderPrivate *priv = soup_content_decoder_get_instance_private (decoder);
- decoder->priv->decoders = g_hash_table_new (g_str_hash, g_str_equal);
+ priv->decoders = g_hash_table_new (g_str_hash, g_str_equal);
/* Hardcoded for now */
- g_hash_table_insert (decoder->priv->decoders, "gzip",
+ g_hash_table_insert (priv->decoders, "gzip",
gzip_decoder_creator);
- g_hash_table_insert (decoder->priv->decoders, "x-gzip",
+ g_hash_table_insert (priv->decoders, "x-gzip",
gzip_decoder_creator);
- g_hash_table_insert (decoder->priv->decoders, "deflate",
+ g_hash_table_insert (priv->decoders, "deflate",
zlib_decoder_creator);
#ifdef WITH_BROTLI
- g_hash_table_insert (decoder->priv->decoders, "br",
+ g_hash_table_insert (priv->decoders, "br",
brotli_decoder_creator);
#endif
}
@@ -224,8 +229,9 @@ static void
soup_content_decoder_finalize (GObject *object)
{
SoupContentDecoder *decoder = SOUP_CONTENT_DECODER (object);
+ SoupContentDecoderPrivate *priv = soup_content_decoder_get_instance_private (decoder);
- g_hash_table_destroy (decoder->priv->decoders);
+ g_hash_table_destroy (priv->decoders);
G_OBJECT_CLASS (soup_content_decoder_parent_class)->finalize (object);
}
diff --git a/libsoup/content-sniffer/soup-content-decoder.h b/libsoup/content-sniffer/soup-content-decoder.h
index c27042ee..f31c4055 100644
--- a/libsoup/content-sniffer/soup-content-decoder.h
+++ b/libsoup/content-sniffer/soup-content-decoder.h
@@ -3,8 +3,7 @@
* Copyright (C) 2009 Red Hat, Inc.
*/
-#ifndef __SOUP_CONTENT_DECODER_H__
-#define __SOUP_CONTENT_DECODER_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-message-body.h"
@@ -12,34 +11,7 @@
G_BEGIN_DECLS
#define SOUP_TYPE_CONTENT_DECODER (soup_content_decoder_get_type ())
-#define SOUP_CONTENT_DECODER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CONTENT_DECODER, SoupContentDecoder))
-#define SOUP_CONTENT_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CONTENT_DECODER, SoupContentDecoderClass))
-#define SOUP_IS_CONTENT_DECODER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CONTENT_DECODER))
-#define SOUP_IS_CONTENT_DECODER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_CONTENT_DECODER))
-#define SOUP_CONTENT_DECODER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CONTENT_DECODER, SoupContentDecoderClass))
-
-typedef struct _SoupContentDecoderPrivate SoupContentDecoderPrivate;
-
-typedef struct {
- GObject parent;
-
- SoupContentDecoderPrivate *priv;
-} SoupContentDecoder;
-
-typedef struct {
- GObjectClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
- void (*_libsoup_reserved5) (void);
-} SoupContentDecoderClass;
-
SOUP_AVAILABLE_IN_2_30
-GType soup_content_decoder_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupContentDecoder, soup_content_decoder, SOUP, CONTENT_DECODER, GObject)
G_END_DECLS
-
-#endif /* __SOUP_CONTENT_DECODER_H__ */
diff --git a/libsoup/content-sniffer/soup-content-processor.c b/libsoup/content-sniffer/soup-content-processor.c
index ca1bd169..da9ad89e 100644
--- a/libsoup/content-sniffer/soup-content-processor.c
+++ b/libsoup/content-sniffer/soup-content-processor.c
@@ -37,7 +37,7 @@ soup_content_processor_wrap_input (SoupContentProcessor *processor,
{
g_return_val_if_fail (SOUP_IS_CONTENT_PROCESSOR (processor), NULL);
- return SOUP_CONTENT_PROCESSOR_GET_INTERFACE (processor)->wrap_input (processor, base_stream, msg, error);
+ return SOUP_CONTENT_PROCESSOR_GET_IFACE (processor)->wrap_input (processor, base_stream, msg, error);
}
SoupProcessingStage
@@ -45,5 +45,5 @@ soup_content_processor_get_processing_stage (SoupContentProcessor *processor)
{
g_return_val_if_fail (SOUP_IS_CONTENT_PROCESSOR (processor), SOUP_STAGE_INVALID);
- return SOUP_CONTENT_PROCESSOR_GET_INTERFACE (processor)->processing_stage;
+ return SOUP_CONTENT_PROCESSOR_GET_IFACE (processor)->processing_stage;
}
diff --git a/libsoup/content-sniffer/soup-content-processor.h b/libsoup/content-sniffer/soup-content-processor.h
index ab92788e..39075412 100644
--- a/libsoup/content-sniffer/soup-content-processor.h
+++ b/libsoup/content-sniffer/soup-content-processor.h
@@ -3,18 +3,14 @@
* Copyright (C) 2012 Igalia, S.L.
*/
-
-#ifndef __SOUP_CONTENT_PROCESSOR_H__
-#define __SOUP_CONTENT_PROCESSOR_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CONTENT_PROCESSOR (soup_content_processor_get_type ())
-#define SOUP_CONTENT_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CONTENT_PROCESSOR, SoupContentProcessor))
-#define SOUP_IS_CONTENT_PROCESSOR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CONTENT_PROCESSOR))
-#define SOUP_CONTENT_PROCESSOR_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ((inst), SOUP_TYPE_CONTENT_PROCESSOR, SoupContentProcessorInterface))
+#define SOUP_TYPE_CONTENT_PROCESSOR (soup_content_processor_get_type ())
+G_DECLARE_INTERFACE (SoupContentProcessor, soup_content_processor, SOUP, CONTENT_PROCESSOR, GObject)
typedef enum {
SOUP_STAGE_INVALID,
@@ -26,9 +22,6 @@ typedef enum {
SOUP_STAGE_BODY_DATA /* Actual body data */
} SoupProcessingStage;
-typedef struct _SoupContentProcessor SoupContentProcessor;
-typedef struct _SoupContentProcessorInterface SoupContentProcessorInterface;
-
struct _SoupContentProcessorInterface {
GTypeInterface parent;
@@ -41,8 +34,6 @@ struct _SoupContentProcessorInterface {
GError **error);
};
-GType soup_content_processor_get_type (void);
-
GInputStream *soup_content_processor_wrap_input (SoupContentProcessor *processor,
GInputStream *base_stream,
SoupMessage *msg,
@@ -51,5 +42,3 @@ GInputStream *soup_content_processor_wrap_input (SoupContentProc
SoupProcessingStage soup_content_processor_get_processing_stage (SoupContentProcessor *processor);
G_END_DECLS
-
-#endif /* __SOUP_CONTENT_PROCESSOR_H__ */
diff --git a/libsoup/content-sniffer/soup-content-sniffer-stream.c b/libsoup/content-sniffer/soup-content-sniffer-stream.c
index f1ed6a1d..4b026e01 100644
--- a/libsoup/content-sniffer/soup-content-sniffer-stream.c
+++ b/libsoup/content-sniffer/soup-content-sniffer-stream.c
@@ -21,7 +21,11 @@ enum {
PROP_MESSAGE,
};
-struct _SoupContentSnifferStreamPrivate {
+struct _SoupContentSnifferStream {
+ GFilterInputStream parent_instance;
+};
+
+typedef struct {
SoupContentSniffer *sniffer;
SoupMessage *msg;
@@ -32,7 +36,7 @@ struct _SoupContentSnifferStreamPrivate {
char *sniffed_type;
GHashTable *sniffed_params;
-};
+} SoupContentSnifferStreamPrivate;
static void soup_content_sniffer_stream_pollable_init (GPollableInputStreamInterface *pollable_interface, gpointer interface_data);
@@ -45,13 +49,14 @@ static void
soup_content_sniffer_stream_finalize (GObject *object)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (object);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
- g_clear_object (&sniffer->priv->sniffer);
- g_clear_object (&sniffer->priv->msg);
- g_free (sniffer->priv->buffer);
- g_clear_error (&sniffer->priv->error);
- g_free (sniffer->priv->sniffed_type);
- g_clear_pointer (&sniffer->priv->sniffed_params, g_hash_table_unref);
+ g_clear_object (&priv->sniffer);
+ g_clear_object (&priv->msg);
+ g_free (priv->buffer);
+ g_clear_error (&priv->error);
+ g_free (priv->sniffed_type);
+ g_clear_pointer (&priv->sniffed_params, g_hash_table_unref);
G_OBJECT_CLASS (soup_content_sniffer_stream_parent_class)->finalize (object);
}
@@ -61,16 +66,17 @@ soup_content_sniffer_stream_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (object);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
switch (prop_id) {
case PROP_SNIFFER:
- sniffer->priv->sniffer = g_value_dup_object (value);
+ priv->sniffer = g_value_dup_object (value);
/* FIXME: supposed to wait until after got-headers for this */
- sniffer->priv->buffer_size = soup_content_sniffer_get_buffer_size (sniffer->priv->sniffer);
- sniffer->priv->buffer = g_malloc (sniffer->priv->buffer_size);
+ priv->buffer_size = soup_content_sniffer_get_buffer_size (priv->sniffer);
+ priv->buffer = g_malloc (priv->buffer_size);
break;
case PROP_MESSAGE:
- sniffer->priv->msg = g_value_dup_object (value);
+ priv->msg = g_value_dup_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -83,13 +89,14 @@ soup_content_sniffer_stream_get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (object);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
switch (prop_id) {
case PROP_SNIFFER:
- g_value_set_object (value, sniffer->priv->sniffer);
+ g_value_set_object (value, priv->sniffer);
break;
case PROP_MESSAGE:
- g_value_set_object (value, sniffer->priv->msg);
+ g_value_set_object (value, priv->msg);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -101,7 +108,8 @@ static gssize
read_and_sniff (GInputStream *stream, gboolean blocking,
GCancellable *cancellable, GError **error)
{
- SoupContentSnifferStreamPrivate *priv = SOUP_CONTENT_SNIFFER_STREAM (stream)->priv;
+ SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (stream);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
gssize nread;
GError *my_error = NULL;
SoupBuffer *buf;
@@ -151,33 +159,34 @@ read_internal (GInputStream *stream,
GError **error)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (stream);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
gssize nread;
- if (sniffer->priv->error) {
- g_propagate_error (error, sniffer->priv->error);
- sniffer->priv->error = NULL;
+ if (priv->error) {
+ g_propagate_error (error, priv->error);
+ priv->error = NULL;
return -1;
}
- if (sniffer->priv->sniffing) {
+ if (priv->sniffing) {
nread = read_and_sniff (stream, blocking, cancellable, error);
if (nread <= 0)
return nread;
}
- if (sniffer->priv->buffer) {
- nread = MIN (count, sniffer->priv->buffer_nread);
+ if (priv->buffer) {
+ nread = MIN (count, priv->buffer_nread);
if (buffer)
- memcpy (buffer, sniffer->priv->buffer, nread);
- if (nread == sniffer->priv->buffer_nread) {
- g_free (sniffer->priv->buffer);
- sniffer->priv->buffer = NULL;
+ memcpy (buffer, priv->buffer, nread);
+ if (nread == priv->buffer_nread) {
+ g_free (priv->buffer);
+ priv->buffer = NULL;
} else {
/* FIXME, inefficient */
- memmove (sniffer->priv->buffer,
- sniffer->priv->buffer + nread,
- sniffer->priv->buffer_nread - nread);
- sniffer->priv->buffer_nread -= nread;
+ memmove (priv->buffer,
+ priv->buffer + nread,
+ priv->buffer_nread - nread);
+ priv->buffer_nread -= nread;
}
} else {
nread = g_pollable_stream_read (G_FILTER_INPUT_STREAM (stream)->base_stream,
@@ -205,9 +214,10 @@ soup_content_sniffer_stream_skip (GInputStream *stream,
GError **error)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (stream);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
gssize nskipped;
- if (sniffer->priv->sniffing) {
+ if (priv->sniffing) {
/* Read into the internal buffer... */
nskipped = soup_content_sniffer_stream_read (stream, NULL, 0, cancellable, error);
if (nskipped == -1)
@@ -215,17 +225,17 @@ soup_content_sniffer_stream_skip (GInputStream *stream,
/* Now fall through */
}
- if (sniffer->priv->buffer) {
- nskipped = MIN (count, sniffer->priv->buffer_nread);
- if (nskipped == sniffer->priv->buffer_nread) {
- g_free (sniffer->priv->buffer);
- sniffer->priv->buffer = NULL;
+ if (priv->buffer) {
+ nskipped = MIN (count, priv->buffer_nread);
+ if (nskipped == priv->buffer_nread) {
+ g_free (priv->buffer);
+ priv->buffer = NULL;
} else {
/* FIXME */
- memmove (sniffer->priv->buffer,
- sniffer->priv->buffer + nskipped,
- sniffer->priv->buffer_nread - nskipped);
- sniffer->priv->buffer_nread -= nskipped;
+ memmove (priv->buffer,
+ priv->buffer + nskipped,
+ priv->buffer_nread - nskipped);
+ priv->buffer_nread -= nskipped;
}
} else {
nskipped = G_INPUT_STREAM_CLASS (soup_content_sniffer_stream_parent_class)->
@@ -248,9 +258,10 @@ static gboolean
soup_content_sniffer_stream_is_readable (GPollableInputStream *stream)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (stream);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
- if (sniffer->priv->error ||
- (!sniffer->priv->sniffing && sniffer->priv->buffer))
+ if (priv->error ||
+ (!priv->sniffing && priv->buffer))
return TRUE;
return g_pollable_input_stream_is_readable (G_POLLABLE_INPUT_STREAM (G_FILTER_INPUT_STREAM (stream)->base_stream));
@@ -271,10 +282,11 @@ soup_content_sniffer_stream_create_source (GPollableInputStream *stream,
GCancellable *cancellable)
{
SoupContentSnifferStream *sniffer = SOUP_CONTENT_SNIFFER_STREAM (stream);
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
GSource *base_source, *pollable_source;
- if (sniffer->priv->error ||
- (!sniffer->priv->sniffing && sniffer->priv->buffer))
+ if (priv->error ||
+ (!priv->sniffing && priv->buffer))
base_source = g_timeout_source_new (0);
else
base_source = g_pollable_input_stream_create_source (G_POLLABLE_INPUT_STREAM (G_FILTER_INPUT_STREAM (stream)->base_stream), cancellable);
@@ -290,8 +302,8 @@ soup_content_sniffer_stream_create_source (GPollableInputStream *stream,
static void
soup_content_sniffer_stream_init (SoupContentSnifferStream *sniffer)
{
- sniffer->priv = soup_content_sniffer_stream_get_instance_private (sniffer);
- sniffer->priv->sniffing = TRUE;
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
+ priv->sniffing = TRUE;
}
static void
@@ -340,7 +352,9 @@ soup_content_sniffer_stream_is_ready (SoupContentSnifferStream *sniffer,
GCancellable *cancellable,
GError **error)
{
- if (!sniffer->priv->sniffing)
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
+
+ if (!priv->sniffing)
return TRUE;
return read_and_sniff (G_INPUT_STREAM (sniffer), blocking,
@@ -351,7 +365,9 @@ const char *
soup_content_sniffer_stream_sniff (SoupContentSnifferStream *sniffer,
GHashTable **params)
{
+ SoupContentSnifferStreamPrivate *priv = soup_content_sniffer_stream_get_instance_private (sniffer);
+
if (params)
- *params = sniffer->priv->sniffed_params;
- return sniffer->priv->sniffed_type;
+ *params = priv->sniffed_params;
+ return priv->sniffed_type;
}
diff --git a/libsoup/content-sniffer/soup-content-sniffer-stream.h b/libsoup/content-sniffer/soup-content-sniffer-stream.h
index de3e9c96..1db3002e 100644
--- a/libsoup/content-sniffer/soup-content-sniffer-stream.h
+++ b/libsoup/content-sniffer/soup-content-sniffer-stream.h
@@ -3,38 +3,15 @@
* Copyright (C) 2010 Red Hat, Inc.
*/
-#ifndef __SOUP_CONTENT_SNIFFER_STREAM_H__
-#define __SOUP_CONTENT_SNIFFER_STREAM_H__ 1
+#pragma once
#include "soup-types.h"
#include "content-sniffer/soup-content-sniffer.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CONTENT_SNIFFER_STREAM (soup_content_sniffer_stream_get_type ())
-#define SOUP_CONTENT_SNIFFER_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SOUP_TYPE_CONTENT_SNIFFER_STREAM, SoupContentSnifferStream))
-#define SOUP_CONTENT_SNIFFER_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SOUP_TYPE_CONTENT_SNIFFER_STREAM, SoupContentSnifferStreamClass))
-#define SOUP_IS_CONTENT_SNIFFER_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SOUP_TYPE_CONTENT_SNIFFER_STREAM))
-#define SOUP_IS_CONTENT_SNIFFER_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SOUP_TYPE_CONTENT_SNIFFER_STREAM))
-#define SOUP_CONTENT_SNIFFER_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SOUP_TYPE_CONTENT_SNIFFER_STREAM, SoupContentSnifferStreamClass))
-
-typedef struct _SoupContentSnifferStream SoupContentSnifferStream;
-typedef struct _SoupContentSnifferStreamPrivate SoupContentSnifferStreamPrivate;
-typedef struct _SoupContentSnifferStreamClass SoupContentSnifferStreamClass;
-
-struct _SoupContentSnifferStream {
- GFilterInputStream parent_instance;
-
- /*< private >*/
- SoupContentSnifferStreamPrivate *priv;
-};
-
-struct _SoupContentSnifferStreamClass {
- GFilterInputStreamClass parent_class;
-
-};
-
-GType soup_content_sniffer_stream_get_type (void) G_GNUC_CONST;
+#define SOUP_TYPE_CONTENT_SNIFFER_STREAM (soup_content_sniffer_stream_get_type ())
+G_DECLARE_FINAL_TYPE (SoupContentSnifferStream, soup_content_sniffer_stream, SOUP, CONTENT_SNIFFER_STREAM, GFilterInputStream)
gboolean soup_content_sniffer_stream_is_ready (SoupContentSnifferStream *sniffer,
gboolean blocking,
@@ -45,5 +22,3 @@ const char *soup_content_sniffer_stream_sniff (SoupContentSnifferStream *s
G_END_DECLS
-
-#endif /* __SOUP_CONTENT_SNIFFER_STREAM_H__ */
diff --git a/libsoup/content-sniffer/soup-content-sniffer.h b/libsoup/content-sniffer/soup-content-sniffer.h
index 7c86f668..cc9aa2b9 100644
--- a/libsoup/content-sniffer/soup-content-sniffer.h
+++ b/libsoup/content-sniffer/soup-content-sniffer.h
@@ -3,30 +3,18 @@
* Copyright (C) 2009 Gustavo Noronha Silva.
*/
-#ifndef __SOUP_CONTENT_SNIFFER_H__
-#define __SOUP_CONTENT_SNIFFER_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-message-body.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CONTENT_SNIFFER (soup_content_sniffer_get_type ())
-#define SOUP_CONTENT_SNIFFER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CONTENT_SNIFFER, SoupContentSniffer))
-#define SOUP_CONTENT_SNIFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CONTENT_SNIFFER, SoupContentSnifferClass))
-#define SOUP_IS_CONTENT_SNIFFER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CONTENT_SNIFFER))
-#define SOUP_IS_CONTENT_SNIFFER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_CONTENT_SNIFFER))
-#define SOUP_CONTENT_SNIFFER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CONTENT_SNIFFER, SoupContentSnifferClass))
-
-typedef struct _SoupContentSnifferPrivate SoupContentSnifferPrivate;
-
-typedef struct {
- GObject parent;
-
- SoupContentSnifferPrivate *priv;
-} SoupContentSniffer;
+#define SOUP_TYPE_CONTENT_SNIFFER (soup_content_sniffer_get_type ())
+SOUP_AVAILABLE_IN_2_28
+G_DECLARE_DERIVABLE_TYPE (SoupContentSniffer, soup_content_sniffer, SOUP, CONTENT_SNIFFER, GObject)
-typedef struct {
+struct _SoupContentSnifferClass {
GObjectClass parent_class;
char* (*sniff) (SoupContentSniffer *sniffer,
@@ -35,16 +23,8 @@ typedef struct {
GHashTable **params);
gsize (*get_buffer_size) (SoupContentSniffer *sniffer);
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
- void (*_libsoup_reserved5) (void);
-} SoupContentSnifferClass;
-
-SOUP_AVAILABLE_IN_2_28
-GType soup_content_sniffer_get_type (void);
+ gpointer padding[6];
+};
SOUP_AVAILABLE_IN_2_28
SoupContentSniffer *soup_content_sniffer_new (void);
@@ -59,4 +39,3 @@ gsize soup_content_sniffer_get_buffer_size (SoupContentSniffer *s
G_END_DECLS
-#endif /* __SOUP_CONTENT_SNIFFER_H__ */
diff --git a/libsoup/content-sniffer/soup-converter-wrapper.c b/libsoup/content-sniffer/soup-converter-wrapper.c
index 133a3ebe..72e459cc 100644
--- a/libsoup/content-sniffer/soup-converter-wrapper.c
+++ b/libsoup/content-sniffer/soup-converter-wrapper.c
@@ -34,14 +34,18 @@ enum {
PROP_MESSAGE
};
-struct _SoupConverterWrapperPrivate
-{
+struct _SoupConverterWrapper {
+ GObject parent;
+};
+
+
+typedef struct {
GConverter *base_converter;
SoupMessage *msg;
gboolean try_deflate_fallback;
gboolean started;
gboolean discarding;
-};
+} SoupConverterWrapperPrivate;
static void soup_converter_wrapper_iface_init (GConverterIface *iface);
@@ -53,13 +57,13 @@ G_DEFINE_TYPE_WITH_CODE (SoupConverterWrapper, soup_converter_wrapper, G_TYPE_OB
static void
soup_converter_wrapper_init (SoupConverterWrapper *converter)
{
- converter->priv = soup_converter_wrapper_get_instance_private (converter);
}
static void
soup_converter_wrapper_finalize (GObject *object)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (object)->priv;
+ SoupConverterWrapper *converter = (SoupConverterWrapper*)object;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (converter);
g_clear_object (&priv->base_converter);
g_clear_object (&priv->msg);
@@ -74,7 +78,8 @@ soup_converter_wrapper_set_property (GObject *object,
const GValue *value,
GParamSpec *pspec)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (object)->priv;
+ SoupConverterWrapper *converter = (SoupConverterWrapper*)object;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (converter);
switch (prop_id) {
case PROP_BASE_CONVERTER:
@@ -106,7 +111,8 @@ soup_converter_wrapper_get_property (GObject *object,
GValue *value,
GParamSpec *pspec)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (object)->priv;
+ SoupConverterWrapper *converter = (SoupConverterWrapper*)object;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (converter);
switch (prop_id) {
case PROP_BASE_CONVERTER:
@@ -165,7 +171,7 @@ soup_converter_wrapper_new (GConverter *base_converter,
static void
soup_converter_wrapper_reset (GConverter *converter)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (converter)->priv;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (SOUP_CONVERTER_WRAPPER (converter));
if (priv->base_converter)
g_converter_reset (priv->base_converter);
@@ -182,7 +188,7 @@ soup_converter_wrapper_fallback_convert (GConverter *converter,
gsize *bytes_written,
GError **error)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (converter)->priv;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (SOUP_CONVERTER_WRAPPER (converter));
if (outbuf_size == 0) {
g_set_error (error, G_IO_ERROR, G_IO_ERROR_NO_SPACE,
@@ -232,7 +238,7 @@ soup_converter_wrapper_real_convert (GConverter *converter,
gsize *bytes_written,
GError **error)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (converter)->priv;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (SOUP_CONVERTER_WRAPPER (converter));
GConverterResult result;
GError *my_error = NULL;
@@ -320,7 +326,7 @@ soup_converter_wrapper_convert (GConverter *converter,
gsize *bytes_written,
GError **error)
{
- SoupConverterWrapperPrivate *priv = SOUP_CONVERTER_WRAPPER (converter)->priv;
+ SoupConverterWrapperPrivate *priv = soup_converter_wrapper_get_instance_private (SOUP_CONVERTER_WRAPPER (converter));
if (priv->base_converter) {
return soup_converter_wrapper_real_convert (converter,
diff --git a/libsoup/content-sniffer/soup-converter-wrapper.h b/libsoup/content-sniffer/soup-converter-wrapper.h
index 9104c5ef..c1b6f627 100644
--- a/libsoup/content-sniffer/soup-converter-wrapper.h
+++ b/libsoup/content-sniffer/soup-converter-wrapper.h
@@ -3,43 +3,16 @@
* Copyright 2011 Red Hat, Inc.
*/
-#ifndef __SOUP_CONVERTER_WRAPPER_H__
-#define __SOUP_CONVERTER_WRAPPER_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_CONVERTER_WRAPPER (soup_converter_wrapper_get_type ())
-#define SOUP_CONVERTER_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_CONVERTER_WRAPPER, SoupConverterWrapper))
-#define SOUP_CONVERTER_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_CONVERTER_WRAPPER, SoupConverterWrapperClass))
-#define SOUP_IS_CONVERTER_WRAPPER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_CONVERTER_WRAPPER))
-#define SOUP_IS_CONVERTER_WRAPPER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_CONVERTER_WRAPPER))
-#define SOUP_CONVERTER_WRAPPER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_CONVERTER_WRAPPER, SoupConverterWrapperClass))
-
-typedef struct _SoupConverterWrapperPrivate SoupConverterWrapperPrivate;
-
-typedef struct {
- GObject parent;
-
- SoupConverterWrapperPrivate *priv;
-} SoupConverterWrapper;
-
-typedef struct {
- GObjectClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupConverterWrapperClass;
-
-GType soup_converter_wrapper_get_type (void);
+#define SOUP_TYPE_CONVERTER_WRAPPER (soup_converter_wrapper_get_type ())
+G_DECLARE_FINAL_TYPE (SoupConverterWrapper, soup_converter_wrapper, SOUP, CONVERTER_WRAPPER, GObject)
GConverter *soup_converter_wrapper_new (GConverter *base_converter,
SoupMessage *msg);
G_END_DECLS
-
-#endif /* __SOUP_CONVERTER_WRAPPER_H__ */
diff --git a/libsoup/cookies/soup-cookie-jar-db.c b/libsoup/cookies/soup-cookie-jar-db.c
index 3e7a7072..c6f698d4 100644
--- a/libsoup/cookies/soup-cookie-jar-db.c
+++ b/libsoup/cookies/soup-cookie-jar-db.c
@@ -38,6 +38,11 @@ enum {
LAST_PROP
};
+struct _SoupCookieJarDB {
+ SoupCookieJar parent;
+};
+
+
typedef struct {
char *filename;
sqlite3 *db;
diff --git a/libsoup/cookies/soup-cookie-jar-db.h b/libsoup/cookies/soup-cookie-jar-db.h
index 90a6048d..084599f9 100644
--- a/libsoup/cookies/soup-cookie-jar-db.h
+++ b/libsoup/cookies/soup-cookie-jar-db.h
@@ -3,44 +3,20 @@
* Copyright (C) 2008 Diego Escalante Urrelo
*/
-#ifndef __SOUP_COOKIE_JAR_DB_H__
-#define __SOUP_COOKIE_JAR_DB_H__ 1
+#pragma once
#include "soup-cookie-jar.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_COOKIE_JAR_DB (soup_cookie_jar_db_get_type ())
-#define SOUP_COOKIE_JAR_DB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_COOKIE_JAR_DB, SoupCookieJarDB))
-#define SOUP_COOKIE_JAR_DB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_COOKIE_JAR_DB, SoupCookieJarDBClass))
-#define SOUP_IS_COOKIE_JAR_DB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_COOKIE_JAR_DB))
-#define SOUP_IS_COOKIE_JAR_DB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_COOKIE_JAR_DB))
-#define SOUP_COOKIE_JAR_DB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_COOKIE_JAR_DB, SoupCookieJarDBClass))
-
-typedef struct {
- SoupCookieJar parent;
-
-} SoupCookieJarDB;
-
-typedef struct {
- SoupCookieJarClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupCookieJarDBClass;
+#define SOUP_TYPE_COOKIE_JAR_DB (soup_cookie_jar_db_get_type ())
+SOUP_AVAILABLE_IN_2_42
+G_DECLARE_FINAL_TYPE (SoupCookieJarDB, soup_cookie_jar_db, SOUP, COOKIE_JAR_DB, SoupCookieJar)
#define SOUP_COOKIE_JAR_DB_FILENAME "filename"
SOUP_AVAILABLE_IN_2_42
-GType soup_cookie_jar_db_get_type (void);
-
-SOUP_AVAILABLE_IN_2_42
SoupCookieJar *soup_cookie_jar_db_new (const char *filename,
gboolean read_only);
G_END_DECLS
-
-#endif /* __SOUP_COOKIE_JAR_DB_H__ */
diff --git a/libsoup/cookies/soup-cookie-jar-text.c b/libsoup/cookies/soup-cookie-jar-text.c
index a187ced9..31c0d891 100644
--- a/libsoup/cookies/soup-cookie-jar-text.c
+++ b/libsoup/cookies/soup-cookie-jar-text.c
@@ -32,6 +32,12 @@ enum {
LAST_PROP
};
+struct _SoupCookieJarText {
+ SoupCookieJar parent;
+
+};
+
+
typedef struct {
char *filename;
diff --git a/libsoup/cookies/soup-cookie-jar-text.h b/libsoup/cookies/soup-cookie-jar-text.h
index 1566596a..80135484 100644
--- a/libsoup/cookies/soup-cookie-jar-text.h
+++ b/libsoup/cookies/soup-cookie-jar-text.h
@@ -3,44 +3,21 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_COOKIE_JAR_TEXT_H__
-#define __SOUP_COOKIE_JAR_TEXT_H__ 1
+#pragma once
#include "soup-cookie-jar.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_COOKIE_JAR_TEXT (soup_cookie_jar_text_get_type ())
-#define SOUP_COOKIE_JAR_TEXT(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_COOKIE_JAR_TEXT, SoupCookieJarText))
-#define SOUP_COOKIE_JAR_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_COOKIE_JAR_TEXT, SoupCookieJarTextClass))
-#define SOUP_IS_COOKIE_JAR_TEXT(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_COOKIE_JAR_TEXT))
-#define SOUP_IS_COOKIE_JAR_TEXT_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_COOKIE_JAR_TEXT))
-#define SOUP_COOKIE_JAR_TEXT_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_COOKIE_JAR_TEXT, SoupCookieJarTextClass))
-
-typedef struct {
- SoupCookieJar parent;
-
-} SoupCookieJarText;
-
-typedef struct {
- SoupCookieJarClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupCookieJarTextClass;
+#define SOUP_TYPE_COOKIE_JAR_TEXT (soup_cookie_jar_text_get_type ())
+SOUP_AVAILABLE_IN_2_26
+G_DECLARE_FINAL_TYPE (SoupCookieJarText, soup_cookie_jar_text, SOUP, COOKIE_JAR_TEXT, SoupCookieJar)
#define SOUP_COOKIE_JAR_TEXT_FILENAME "filename"
SOUP_AVAILABLE_IN_2_26
-GType soup_cookie_jar_text_get_type (void);
-
-SOUP_AVAILABLE_IN_2_26
SoupCookieJar *soup_cookie_jar_text_new (const char *filename,
gboolean read_only);
G_END_DECLS
-#endif /* __SOUP_COOKIE_JAR_TEXT_H__ */
diff --git a/libsoup/cookies/soup-cookie-jar.h b/libsoup/cookies/soup-cookie-jar.h
index 793e503c..32c0a15e 100644
--- a/libsoup/cookies/soup-cookie-jar.h
+++ b/libsoup/cookies/soup-cookie-jar.h
@@ -3,26 +3,17 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_COOKIE_JAR_H__
-#define __SOUP_COOKIE_JAR_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
#define SOUP_TYPE_COOKIE_JAR (soup_cookie_jar_get_type ())
-#define SOUP_COOKIE_JAR(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_COOKIE_JAR, SoupCookieJar))
-#define SOUP_COOKIE_JAR_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_COOKIE_JAR, SoupCookieJarClass))
-#define SOUP_IS_COOKIE_JAR(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_COOKIE_JAR))
-#define SOUP_IS_COOKIE_JAR_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_COOKIE_JAR))
-#define SOUP_COOKIE_JAR_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_COOKIE_JAR, SoupCookieJarClass))
-
-struct _SoupCookieJar {
- GObject parent;
-
-};
+SOUP_AVAILABLE_IN_2_24
+G_DECLARE_DERIVABLE_TYPE (SoupCookieJar, soup_cookie_jar, SOUP, COOKIE_JAR, GObject)
-typedef struct {
+struct _SoupCookieJarClass {
GObjectClass parent_class;
void (*save) (SoupCookieJar *jar);
@@ -34,9 +25,8 @@ typedef struct {
SoupCookie *new_cookie);
/* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
-} SoupCookieJarClass;
+ gpointer padding[6];
+};
#define SOUP_COOKIE_JAR_READ_ONLY "read-only"
#define SOUP_COOKIE_JAR_ACCEPT_POLICY "accept-policy"
@@ -49,8 +39,6 @@ typedef enum {
} SoupCookieJarAcceptPolicy;
SOUP_AVAILABLE_IN_2_24
-GType soup_cookie_jar_get_type (void);
-SOUP_AVAILABLE_IN_2_24
SoupCookieJar * soup_cookie_jar_new (void);
SOUP_AVAILABLE_IN_2_24
char * soup_cookie_jar_get_cookies (SoupCookieJar *jar,
@@ -104,5 +92,3 @@ SOUP_AVAILABLE_IN_2_40
gboolean soup_cookie_jar_is_persistent (SoupCookieJar *jar);
G_END_DECLS
-
-#endif /* __SOUP_COOKIE_JAR_H__ */
diff --git a/libsoup/cookies/soup-cookie.h b/libsoup/cookies/soup-cookie.h
index 275960cc..eb533a55 100644
--- a/libsoup/cookies/soup-cookie.h
+++ b/libsoup/cookies/soup-cookie.h
@@ -3,8 +3,7 @@
* Copyright 2007, 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_COOKIE_H__
-#define __SOUP_COOKIE_H__ 1
+#pragma once
#include "soup-types.h"
@@ -137,6 +136,6 @@ SOUP_AVAILABLE_IN_2_30
gboolean soup_cookie_domain_matches (SoupCookie *cookie,
const char *host);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookie, soup_cookie_free)
-#endif /* __SOUP_COOKIE_H__ */
+G_END_DECLS
diff --git a/libsoup/hsts/soup-hsts-enforcer-db.c b/libsoup/hsts/soup-hsts-enforcer-db.c
index bad688a0..1caa46bf 100644
--- a/libsoup/hsts/soup-hsts-enforcer-db.c
+++ b/libsoup/hsts/soup-hsts-enforcer-db.c
@@ -34,10 +34,14 @@ enum {
LAST_PROP
};
-struct _SoupHSTSEnforcerDBPrivate {
+struct _SoupHSTSEnforcerDB {
+ SoupHSTSEnforcer parent;
+};
+
+typedef struct {
char *filename;
sqlite3 *db;
-};
+} SoupHSTSEnforcerDBPrivate;
G_DEFINE_TYPE_WITH_CODE (SoupHSTSEnforcerDB, soup_hsts_enforcer_db, SOUP_TYPE_HSTS_ENFORCER,
G_ADD_PRIVATE(SoupHSTSEnforcerDB))
@@ -47,13 +51,12 @@ static void load (SoupHSTSEnforcer *hsts_enforcer);
static void
soup_hsts_enforcer_db_init (SoupHSTSEnforcerDB *db)
{
- db->priv = soup_hsts_enforcer_db_get_instance_private (db);
}
static void
soup_hsts_enforcer_db_finalize (GObject *object)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (object)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)object);
g_free (priv->filename);
sqlite3_close (priv->db);
@@ -65,7 +68,7 @@ static void
soup_hsts_enforcer_db_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (object)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)object);
switch (prop_id) {
case PROP_FILENAME:
@@ -82,7 +85,7 @@ static void
soup_hsts_enforcer_db_get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (object)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)object);
switch (prop_id) {
case PROP_FILENAME:
@@ -212,7 +215,7 @@ try_exec:
static gboolean
open_db (SoupHSTSEnforcer *hsts_enforcer)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (hsts_enforcer)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)hsts_enforcer);
char *error = NULL;
@@ -234,7 +237,7 @@ open_db (SoupHSTSEnforcer *hsts_enforcer)
static void
load (SoupHSTSEnforcer *hsts_enforcer)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (hsts_enforcer)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)hsts_enforcer);
if (priv->db == NULL) {
if (open_db (hsts_enforcer))
@@ -249,7 +252,7 @@ soup_hsts_enforcer_db_changed (SoupHSTSEnforcer *hsts_enforcer,
SoupHSTSPolicy *old_policy,
SoupHSTSPolicy *new_policy)
{
- SoupHSTSEnforcerDBPrivate *priv = SOUP_HSTS_ENFORCER_DB (hsts_enforcer)->priv;
+ SoupHSTSEnforcerDBPrivate *priv = soup_hsts_enforcer_db_get_instance_private ((SoupHSTSEnforcerDB*)hsts_enforcer);
char *query;
/* Session policies do not need to be stored in the database. */
diff --git a/libsoup/hsts/soup-hsts-enforcer-db.h b/libsoup/hsts/soup-hsts-enforcer-db.h
index ae93d71f..2ff3ba1f 100644
--- a/libsoup/hsts/soup-hsts-enforcer-db.h
+++ b/libsoup/hsts/soup-hsts-enforcer-db.h
@@ -4,47 +4,19 @@
* Copyright (C) 2017, 2018 Metrological Group B.V.
*/
-#ifndef __SOUP_HSTS_ENFORCER_DB_H__
-#define __SOUP_HSTS_ENFORCER_DB_H__ 1
+#pragma once
#include "soup-hsts-enforcer.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_HSTS_ENFORCER_DB (soup_hsts_enforcer_db_get_type ())
-#define SOUP_HSTS_ENFORCER_DB(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_HSTS_ENFORCER_DB, SoupHSTSEnforcerDB))
-#define SOUP_HSTS_ENFORCER_DB_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_HSTS_ENFORCER_DB, SoupHSTSEnforcerDBClass))
-#define SOUP_IS_HSTS_ENFORCER_DB(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER_DB))
-#define SOUP_IS_HSTS_ENFORCER_DB_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER_DB))
-#define SOUP_HSTS_ENFORCER_DB_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_HSTS_ENFORCER_DB, SoupHSTSEnforcerDBClass))
-
-typedef struct _SoupHSTSEnforcerDBPrivate SoupHSTSEnforcerDBPrivate;
-
-typedef struct {
- SoupHSTSEnforcer parent;
-
- SoupHSTSEnforcerDBPrivate *priv;
-
-} SoupHSTSEnforcerDB;
-
-typedef struct {
- SoupHSTSEnforcerClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupHSTSEnforcerDBClass;
+#define SOUP_TYPE_HSTS_ENFORCER_DB (soup_hsts_enforcer_db_get_type ())
+SOUP_AVAILABLE_IN_2_68
+G_DECLARE_FINAL_TYPE (SoupHSTSEnforcerDB, soup_hsts_enforcer_db, SOUP, HSTS_ENFORCER_DB, SoupHSTSEnforcer)
#define SOUP_HSTS_ENFORCER_DB_FILENAME "filename"
SOUP_AVAILABLE_IN_2_68
-GType soup_hsts_enforcer_db_get_type (void);
-
-SOUP_AVAILABLE_IN_2_68
SoupHSTSEnforcer *soup_hsts_enforcer_db_new (const char *filename);
G_END_DECLS
-
-#endif /* __SOUP_HSTS_ENFORCER_DB_H__ */
diff --git a/libsoup/hsts/soup-hsts-enforcer.c b/libsoup/hsts/soup-hsts-enforcer.c
index 3d30054e..e3fc2e58 100644
--- a/libsoup/hsts/soup-hsts-enforcer.c
+++ b/libsoup/hsts/soup-hsts-enforcer.c
@@ -53,11 +53,11 @@ enum {
static guint signals[LAST_SIGNAL] = { 0 };
-struct _SoupHSTSEnforcerPrivate {
+typedef struct {
SoupSession *session;
GHashTable *host_policies;
GHashTable *session_policies;
-};
+} SoupHSTSEnforcerPrivate;
G_DEFINE_TYPE_WITH_CODE (SoupHSTSEnforcer, soup_hsts_enforcer, G_TYPE_OBJECT,
G_IMPLEMENT_INTERFACE (SOUP_TYPE_SESSION_FEATURE,
@@ -67,13 +67,13 @@ G_DEFINE_TYPE_WITH_CODE (SoupHSTSEnforcer, soup_hsts_enforcer, G_TYPE_OBJECT,
static void
soup_hsts_enforcer_init (SoupHSTSEnforcer *hsts_enforcer)
{
- hsts_enforcer->priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
- hsts_enforcer->priv->host_policies = g_hash_table_new_full (soup_str_case_hash,
+ priv->host_policies = g_hash_table_new_full (soup_str_case_hash,
soup_str_case_equal,
g_free, NULL);
- hsts_enforcer->priv->session_policies = g_hash_table_new_full (soup_str_case_hash,
+ priv->session_policies = g_hash_table_new_full (soup_str_case_hash,
soup_str_case_equal,
g_free, NULL);
}
@@ -81,7 +81,7 @@ soup_hsts_enforcer_init (SoupHSTSEnforcer *hsts_enforcer)
static void
soup_hsts_enforcer_finalize (GObject *object)
{
- SoupHSTSEnforcerPrivate *priv = SOUP_HSTS_ENFORCER (object)->priv;
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private ((SoupHSTSEnforcer*)object);
GHashTableIter iter;
gpointer key, value;
@@ -108,14 +108,16 @@ static SoupHSTSPolicy *
soup_hsts_enforcer_get_host_policy (SoupHSTSEnforcer *hsts_enforcer,
const char *domain)
{
- return g_hash_table_lookup (hsts_enforcer->priv->host_policies, domain);
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
+ return g_hash_table_lookup (priv->host_policies, domain);
}
static SoupHSTSPolicy *
soup_hsts_enforcer_get_session_policy (SoupHSTSEnforcer *hsts_enforcer,
const char *domain)
{
- return g_hash_table_lookup (hsts_enforcer->priv->session_policies, domain);
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
+ return g_hash_table_lookup (priv->session_policies, domain);
}
static gboolean
@@ -240,7 +242,8 @@ should_remove_expired_host_policy (G_GNUC_UNUSED gpointer key,
static void
remove_expired_host_policies (SoupHSTSEnforcer *hsts_enforcer)
{
- g_hash_table_foreach_remove (hsts_enforcer->priv->host_policies,
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
+ g_hash_table_foreach_remove (priv->host_policies,
(GHRFunc)should_remove_expired_host_policy,
hsts_enforcer);
}
@@ -249,14 +252,15 @@ static void
soup_hsts_enforcer_remove_host_policy (SoupHSTSEnforcer *hsts_enforcer,
const char *domain)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
SoupHSTSPolicy *policy;
- policy = g_hash_table_lookup (hsts_enforcer->priv->host_policies, domain);
+ policy = g_hash_table_lookup (priv->host_policies, domain);
if (!policy)
return;
- g_hash_table_remove (hsts_enforcer->priv->host_policies, domain);
+ g_hash_table_remove (priv->host_policies, domain);
soup_hsts_enforcer_changed (hsts_enforcer, policy, NULL);
soup_hsts_policy_free (policy);
@@ -267,6 +271,7 @@ static void
soup_hsts_enforcer_replace_policy (SoupHSTSEnforcer *hsts_enforcer,
SoupHSTSPolicy *new_policy)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GHashTable *policies;
SoupHSTSPolicy *old_policy;
const char *domain;
@@ -277,8 +282,8 @@ soup_hsts_enforcer_replace_policy (SoupHSTSEnforcer *hsts_enforcer,
domain = soup_hsts_policy_get_domain (new_policy);
is_session_policy = soup_hsts_policy_is_session_policy (new_policy);
- policies = is_session_policy ? hsts_enforcer->priv->session_policies :
- hsts_enforcer->priv->host_policies;
+ policies = is_session_policy ? priv->session_policies :
+ priv->host_policies;
old_policy = g_hash_table_lookup (policies, domain);
g_assert (old_policy);
@@ -295,6 +300,7 @@ static void
soup_hsts_enforcer_insert_policy (SoupHSTSEnforcer *hsts_enforcer,
SoupHSTSPolicy *policy)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GHashTable *policies;
const char *domain;
gboolean is_session_policy;
@@ -309,8 +315,8 @@ soup_hsts_enforcer_insert_policy (SoupHSTSEnforcer *hsts_enforcer,
g_return_if_fail (domain != NULL);
- policies = is_session_policy ? hsts_enforcer->priv->session_policies :
- hsts_enforcer->priv->host_policies;
+ policies = is_session_policy ? priv->session_policies :
+ priv->host_policies;
g_assert (!g_hash_table_contains (policies, domain));
@@ -337,6 +343,7 @@ void
soup_hsts_enforcer_set_policy (SoupHSTSEnforcer *hsts_enforcer,
SoupHSTSPolicy *policy)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GHashTable *policies;
const char *domain;
gboolean is_session_policy;
@@ -349,8 +356,8 @@ soup_hsts_enforcer_set_policy (SoupHSTSEnforcer *hsts_enforcer,
g_return_if_fail (domain != NULL);
is_session_policy = soup_hsts_policy_is_session_policy (policy);
- policies = is_session_policy ? hsts_enforcer->priv->session_policies :
- hsts_enforcer->priv->host_policies;
+ policies = is_session_policy ? priv->session_policies :
+ priv->host_policies;
if (!is_session_policy && soup_hsts_policy_is_expired (policy)) {
soup_hsts_enforcer_remove_host_policy (hsts_enforcer, domain);
@@ -496,8 +503,9 @@ rewrite_message_uri_to_https (SoupMessage *msg)
}
static void
-on_sts_known_host_message_starting (SoupMessage *msg, SoupHSTSEnforcer *enforcer)
+on_sts_known_host_message_starting (SoupMessage *msg, SoupHSTSEnforcer *hsts_enforcer)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GTlsCertificateFlags errors;
/* THE UA MUST terminate the connection if there are
@@ -506,7 +514,7 @@ on_sts_known_host_message_starting (SoupMessage *msg, SoupHSTSEnforcer *enforcer
soup_message_get_https_status (msg, NULL, &errors);
if (errors)
- soup_session_cancel_message (enforcer->priv->session, msg, SOUP_STATUS_CANCELLED);
+ soup_session_cancel_message (priv->session, msg, SOUP_STATUS_CANCELLED);
}
static void
@@ -556,7 +564,8 @@ message_restarted_cb (SoupMessage *msg, gpointer user_data)
static void
soup_hsts_enforcer_attach (SoupSessionFeature *feature, SoupSession *session)
{
- SOUP_HSTS_ENFORCER (feature)->priv->session = session;
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (SOUP_HSTS_ENFORCER (feature));
+ priv->session = session;
if (soup_hsts_enforcer_default_feature_interface->attach)
soup_hsts_enforcer_default_feature_interface->attach (feature, session);
@@ -677,13 +686,14 @@ GList*
soup_hsts_enforcer_get_domains (SoupHSTSEnforcer *hsts_enforcer,
gboolean session_policies)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GList *domains = NULL;
g_return_val_if_fail (SOUP_IS_HSTS_ENFORCER (hsts_enforcer), NULL);
- g_hash_table_foreach (hsts_enforcer->priv->host_policies, add_domain_to_list, &domains);
+ g_hash_table_foreach (priv->host_policies, add_domain_to_list, &domains);
if (session_policies)
- g_hash_table_foreach (hsts_enforcer->priv->session_policies, add_domain_to_list, &domains);
+ g_hash_table_foreach (priv->session_policies, add_domain_to_list, &domains);
return domains;
}
@@ -715,13 +725,14 @@ GList*
soup_hsts_enforcer_get_policies (SoupHSTSEnforcer *hsts_enforcer,
gboolean session_policies)
{
+ SoupHSTSEnforcerPrivate *priv = soup_hsts_enforcer_get_instance_private (hsts_enforcer);
GList *policies = NULL;
g_return_val_if_fail (SOUP_IS_HSTS_ENFORCER (hsts_enforcer), NULL);
- g_hash_table_foreach (hsts_enforcer->priv->host_policies, add_policy_to_list, &policies);
+ g_hash_table_foreach (priv->host_policies, add_policy_to_list, &policies);
if (session_policies)
- g_hash_table_foreach (hsts_enforcer->priv->session_policies, add_policy_to_list, &policies);
+ g_hash_table_foreach (priv->session_policies, add_policy_to_list, &policies);
return policies;
}
diff --git a/libsoup/hsts/soup-hsts-enforcer.h b/libsoup/hsts/soup-hsts-enforcer.h
index bb80825a..ba7d43f5 100644
--- a/libsoup/hsts/soup-hsts-enforcer.h
+++ b/libsoup/hsts/soup-hsts-enforcer.h
@@ -4,27 +4,15 @@
* Copyright (C) 2017, 2018 Metrological Group B.V.
*/
-#ifndef __SOUP_HSTS_ENFORCER_H__
-#define __SOUP_HSTS_ENFORCER_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_HSTS_ENFORCER (soup_hsts_enforcer_get_type ())
-#define SOUP_HSTS_ENFORCER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcer))
-#define SOUP_HSTS_ENFORCER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcerClass))
-#define SOUP_IS_HSTS_ENFORCER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER))
-#define SOUP_IS_HSTS_ENFORCER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_HSTS_ENFORCER))
-#define SOUP_HSTS_ENFORCER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_HSTS_ENFORCER, SoupHSTSEnforcerClass))
-
-typedef struct _SoupHSTSEnforcerPrivate SoupHSTSEnforcerPrivate;
-
-struct _SoupHSTSEnforcer {
- GObject parent;
-
- SoupHSTSEnforcerPrivate *priv;
-};
+#define SOUP_TYPE_HSTS_ENFORCER (soup_hsts_enforcer_get_type ())
+SOUP_AVAILABLE_IN_2_68
+G_DECLARE_DERIVABLE_TYPE (SoupHSTSEnforcer, soup_hsts_enforcer, SOUP, HSTS_ENFORCER, GObject)
/**
* SoupHSTSEnforcerClass:
@@ -38,7 +26,7 @@ struct _SoupHSTSEnforcer {
* policies.
* @changed: the class closure for the #SoupHSTSEnforcer::changed signal.
**/
-typedef struct {
+struct _SoupHSTSEnforcerClass {
GObjectClass parent_class;
gboolean (*is_persistent) (SoupHSTSEnforcer *hsts_enforcer);
@@ -52,16 +40,10 @@ typedef struct {
void (*hsts_enforced) (SoupHSTSEnforcer *enforcer,
SoupMessage *message);
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupHSTSEnforcerClass;
+ gpointer padding[4];
+};
SOUP_AVAILABLE_IN_2_68
-GType soup_hsts_enforcer_get_type (void);
-SOUP_AVAILABLE_IN_2_68
SoupHSTSEnforcer *soup_hsts_enforcer_new (void);
SOUP_AVAILABLE_IN_2_68
gboolean soup_hsts_enforcer_is_persistent (SoupHSTSEnforcer *hsts_enforcer);
@@ -85,5 +67,3 @@ GList *soup_hsts_enforcer_get_policies (SoupHSTSEnfo
gboolean session_policies);
G_END_DECLS
-
-#endif /* __SOUP_HSTS_ENFORCER_H__ */
diff --git a/libsoup/hsts/soup-hsts-policy.h b/libsoup/hsts/soup-hsts-policy.h
index b86aca02..b55f496b 100644
--- a/libsoup/hsts/soup-hsts-policy.h
+++ b/libsoup/hsts/soup-hsts-policy.h
@@ -4,8 +4,7 @@
* Copyright (C) 2017, 2018 Metrological Group B.V.
*/
-#ifndef __SOUP_HSTS_POLICY_H__
-#define __SOUP_HSTS_POLICY_H__ 1
+#pragma once
#include "soup-types.h"
@@ -56,6 +55,6 @@ gboolean soup_hsts_policy_is_session_policy (SoupHSTSPolicy *policy);
SOUP_AVAILABLE_IN_2_68
void soup_hsts_policy_free (SoupHSTSPolicy *policy);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupHSTSPolicy, soup_hsts_policy_free)
-#endif /* __SOUP_HSTS_POLICY_H__ */
+G_END_DECLS
diff --git a/libsoup/include/soup-installed.h b/libsoup/include/soup-installed.h
index 1e1a0ebd..cf08bbd2 100644
--- a/libsoup/include/soup-installed.h
+++ b/libsoup/include/soup-installed.h
@@ -13,10 +13,14 @@ extern "C" {
#define __SOUP_H_INSIDE__
#include <libsoup/soup-auth.h>
+#include <libsoup/soup-auth-basic.h>
+#include <libsoup/soup-auth-digest.h>
#include <libsoup/soup-auth-domain.h>
#include <libsoup/soup-auth-domain-basic.h>
#include <libsoup/soup-auth-domain-digest.h>
#include <libsoup/soup-auth-manager.h>
+#include <libsoup/soup-auth-negotiate.h>
+#include <libsoup/soup-auth-ntlm.h>
#include <libsoup/soup-cache.h>
#include <libsoup/soup-content-decoder.h>
#include <libsoup/soup-content-sniffer.h>
@@ -53,8 +57,6 @@ extern "C" {
#include <libsoup/soup-websocket-extension-manager.h>
#include <libsoup/soup-xmlrpc.h>
-#include <libsoup/soup-autocleanups.h>
-
#undef __SOUP_H_INSIDE__
#ifdef __cplusplus
diff --git a/libsoup/meson.build b/libsoup/meson.build
index 8ad52c92..2515ba35 100644
--- a/libsoup/meson.build
+++ b/libsoup/meson.build
@@ -93,6 +93,8 @@ soup_private_enum_headers = [
soup_introspection_headers = [
'auth/soup-auth.h',
+ 'auth/soup-auth-basic.h',
+ 'auth/soup-auth-digest.h',
'auth/soup-auth-domain.h',
'auth/soup-auth-domain-basic.h',
'auth/soup-auth-domain-digest.h',
@@ -123,8 +125,6 @@ soup_introspection_headers = [
'xmlrpc/soup-xmlrpc.h',
- 'soup-autocleanups.h',
-
'soup-date.h',
'soup-form.h',
'soup-headers.h',
diff --git a/libsoup/soup-autocleanups.h b/libsoup/soup-autocleanups.h
deleted file mode 100644
index 98463080..00000000
--- a/libsoup/soup-autocleanups.h
+++ /dev/null
@@ -1,65 +0,0 @@
-/*
- * Copyright 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, see <http://www.gnu.org/licenses/>.
- */
-
-#if !defined (__SOUP_H_INSIDE__) && !defined (LIBSOUP_COMPILATION)
-#error "Only <libsoup/soup.h> can be included directly."
-#endif
-
-#ifndef __SOUP_AUTOCLEANUPS_H__
-#define __SOUP_AUTOCLEANUPS_H__
-
-#if SOUP_VERSION_MAX_ALLOWED >= SOUP_VERSION_2_52
-#ifndef __GI_SCANNER__
-#ifdef G_DEFINE_AUTOPTR_CLEANUP_FUNC
-
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupAuth, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupAuthDomain, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupAuthDomainBasic, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupAuthDomainDigest, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupAuthManager, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupBuffer, soup_buffer_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCache, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupContentDecoder, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupContentSniffer, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookie, soup_cookie_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookieJar, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookieJarDB, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupCookieJarText, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupDate, soup_date_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupLogger, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMessage, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMessageBody, soup_message_body_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMessageHeaders, soup_message_headers_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMultipart, soup_multipart_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupMultipartInputStream, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupRequest, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupRequestData, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupRequestFile, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupRequestHTTP, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupServer, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupSession, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupSessionAsync, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupSessionFeature, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupURI, soup_uri_free)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupWebsocketConnection, g_object_unref)
-G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupXMLRPCParams, soup_xmlrpc_params_free)
-
-#endif
-#endif
-#endif
-
-#endif /* __SOUP_AUTOCLEANUPS_H__ */
diff --git a/libsoup/soup-date.h b/libsoup/soup-date.h
index b0b5b395..cbb0798f 100644
--- a/libsoup/soup-date.h
+++ b/libsoup/soup-date.h
@@ -4,8 +4,7 @@
* Copyright (C) 2007 Red Hat, Inc.
*/
-#ifndef __SOUP_DATE_H__
-#define __SOUP_DATE_H__ 1
+#pragma once
#include <time.h>
#include "soup-types.h"
@@ -84,6 +83,6 @@ SoupDate *soup_date_copy (SoupDate *date);
SOUP_AVAILABLE_IN_2_24
void soup_date_free (SoupDate *date);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupDate, soup_date_free)
-#endif /* __SOUP_DATE_H__ */
+G_END_DECLS
diff --git a/libsoup/soup-logger.c b/libsoup/soup-logger.c
index 2ba6ce52..50297dc8 100644
--- a/libsoup/soup-logger.c
+++ b/libsoup/soup-logger.c
@@ -89,6 +89,12 @@
* event of the #SoupMessage::finished signal.
**/
+struct _SoupLogger {
+ GObject parent;
+
+};
+
+
typedef struct {
/* We use a mutex so that if requests are being run in
* multiple threads, we don't mix up the output.
diff --git a/libsoup/soup-logger.h b/libsoup/soup-logger.h
index 06c9cef4..e6c6b409 100644
--- a/libsoup/soup-logger.h
+++ b/libsoup/soup-logger.h
@@ -3,19 +3,15 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_LOGGER_H__
-#define __SOUP_LOGGER_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_LOGGER (soup_logger_get_type ())
-#define SOUP_LOGGER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_LOGGER, SoupLogger))
-#define SOUP_LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_LOGGER, SoupLoggerClass))
-#define SOUP_IS_LOGGER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_LOGGER))
-#define SOUP_IS_LOGGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_LOGGER))
-#define SOUP_LOGGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_LOGGER, SoupLoggerClass))
+#define SOUP_TYPE_LOGGER (soup_logger_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_FINAL_TYPE (SoupLogger, soup_logger, SOUP, LOGGER, GObject)
typedef enum {
SOUP_LOGGER_LOG_NONE,
@@ -24,21 +20,6 @@ typedef enum {
SOUP_LOGGER_LOG_BODY
} SoupLoggerLogLevel;
-typedef struct {
- GObject parent;
-
-} SoupLogger;
-
-typedef struct {
- GObjectClass parent_class;
-
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupLoggerClass;
-
typedef SoupLoggerLogLevel (*SoupLoggerFilter) (SoupLogger *logger,
SoupMessage *msg,
gpointer user_data);
@@ -49,8 +30,6 @@ typedef void (*SoupLoggerPrinter) (SoupLogger *logger,
const char *data,
gpointer user_data);
-SOUP_AVAILABLE_IN_2_4
-GType soup_logger_get_type (void);
#define SOUP_LOGGER_LEVEL "level"
#define SOUP_LOGGER_MAX_BODY_SIZE "max-body-size"
@@ -77,5 +56,3 @@ void soup_logger_set_printer (SoupLogger *logger,
GDestroyNotify destroy);
G_END_DECLS
-
-#endif /* __SOUP_LOGGER_H__ */
diff --git a/libsoup/soup-message-body.h b/libsoup/soup-message-body.h
index 60c29333..c08e26ae 100644
--- a/libsoup/soup-message-body.h
+++ b/libsoup/soup-message-body.h
@@ -3,8 +3,7 @@
* Copyright (C) 2000-2003, Ximian, Inc.
*/
-#ifndef __SOUP_MESSAGE_BODY_H__
-#define __SOUP_MESSAGE_BODY_H__ 1
+#pragma once
#include "soup-types.h"
@@ -109,6 +108,7 @@ void soup_message_body_wrote_chunk (SoupMessageBody *body,
SOUP_AVAILABLE_IN_2_4
void soup_message_body_free (SoupMessageBody *body);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupBuffer, soup_buffer_free)
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageBody, soup_message_body_free)
-#endif /* __SOUP_MESSAGE_BODY_H__ */
+G_END_DECLS
diff --git a/libsoup/soup-message-headers.h b/libsoup/soup-message-headers.h
index a55158fb..f69e093a 100644
--- a/libsoup/soup-message-headers.h
+++ b/libsoup/soup-message-headers.h
@@ -3,8 +3,7 @@
* Copyright (C) 2005 Novell, Inc.
*/
-#ifndef __SOUP_MESSAGE_HEADERS_H__
-#define __SOUP_MESSAGE_HEADERS_H__ 1
+#pragma once
#include "soup-types.h"
@@ -170,6 +169,6 @@ void soup_message_headers_set_content_disposition (SoupMessageHeaders *hdrs
const char *disposition,
GHashTable *params);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMessageHeaders, soup_message_headers_free)
-#endif /* __SOUP_MESSAGE_HEADERS_H__ */
+G_END_DECLS
diff --git a/libsoup/soup-message-io.c b/libsoup/soup-message-io.c
index 6a104e1c..302630ba 100644
--- a/libsoup/soup-message-io.c
+++ b/libsoup/soup-message-io.c
@@ -277,10 +277,10 @@ read_headers (SoupMessage *msg, gboolean blocking,
static gint
processing_stage_cmp (gconstpointer a,
- gconstpointer b)
+ gconstpointer b)
{
- SoupProcessingStage stage_a = soup_content_processor_get_processing_stage (SOUP_CONTENT_PROCESSOR (a));
- SoupProcessingStage stage_b = soup_content_processor_get_processing_stage (SOUP_CONTENT_PROCESSOR (b));
+ SoupProcessingStage stage_a = soup_content_processor_get_processing_stage (SOUP_CONTENT_PROCESSOR ((gpointer)a));
+ SoupProcessingStage stage_b = soup_content_processor_get_processing_stage (SOUP_CONTENT_PROCESSOR ((gpointer)b));
if (stage_a > stage_b)
return 1;
diff --git a/libsoup/soup-method.h b/libsoup/soup-method.h
index 1a6a38c1..b5a002d8 100644
--- a/libsoup/soup-method.h
+++ b/libsoup/soup-method.h
@@ -3,8 +3,7 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_METHOD_H__
-#define __SOUP_METHOD_H__ 1
+#pragma once
#include "soup-types.h"
@@ -75,5 +74,3 @@ SOUP_VAR gpointer _SOUP_METHOD_LOCK;
SOUP_VAR gpointer _SOUP_METHOD_UNLOCK;
G_END_DECLS
-
-#endif /* __SOUP_METHOD_H__ */
diff --git a/libsoup/soup-multipart-input-stream.c b/libsoup/soup-multipart-input-stream.c
index 535dd6ec..f17d0c3a 100644
--- a/libsoup/soup-multipart-input-stream.c
+++ b/libsoup/soup-multipart-input-stream.c
@@ -43,7 +43,11 @@ enum {
PROP_MESSAGE,
};
-struct _SoupMultipartInputStreamPrivate {
+struct _SoupMultipartInputStream {
+ GFilterInputStream parent_instance;
+};
+
+typedef struct {
SoupMessage *msg;
gboolean done_with_part;
@@ -57,7 +61,7 @@ struct _SoupMultipartInputStreamPrivate {
gsize boundary_size;
goffset remaining_bytes;
-};
+} SoupMultipartInputStreamPrivate;
static void soup_multipart_input_stream_pollable_init (GPollableInputStreamInterface *pollable_interface, gpointer interface_data);
@@ -70,9 +74,10 @@ static void
soup_multipart_input_stream_dispose (GObject *object)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (object);
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
- g_clear_object (&multipart->priv->msg);
- g_clear_object (&multipart->priv->base_stream);
+ g_clear_object (&priv->msg);
+ g_clear_object (&priv->base_stream);
G_OBJECT_CLASS (soup_multipart_input_stream_parent_class)->dispose (object);
}
@@ -81,11 +86,12 @@ static void
soup_multipart_input_stream_finalize (GObject *object)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (object);
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
- g_free (multipart->priv->boundary);
+ g_free (priv->boundary);
- if (multipart->priv->meta_buf)
- g_clear_pointer (&multipart->priv->meta_buf, g_byte_array_unref);
+ if (priv->meta_buf)
+ g_clear_pointer (&priv->meta_buf, g_byte_array_unref);
G_OBJECT_CLASS (soup_multipart_input_stream_parent_class)->finalize (object);
}
@@ -95,10 +101,11 @@ soup_multipart_input_stream_set_property (GObject *object, guint prop_id,
const GValue *value, GParamSpec *pspec)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (object);
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
switch (prop_id) {
case PROP_MESSAGE:
- multipart->priv->msg = g_value_dup_object (value);
+ priv->msg = g_value_dup_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -111,10 +118,11 @@ soup_multipart_input_stream_get_property (GObject *object, guint prop_id,
GValue *value, GParamSpec *pspec)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (object);
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
switch (prop_id) {
case PROP_MESSAGE:
- g_value_set_object (value, multipart->priv->msg);
+ g_value_set_object (value, priv->msg);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -131,7 +139,7 @@ soup_multipart_input_stream_read_real (GInputStream *stream,
GError **error)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (stream);
- SoupMultipartInputStreamPrivate *priv = multipart->priv;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
gboolean got_boundary = FALSE;
gssize nread = 0;
guint8 *buf;
@@ -201,8 +209,7 @@ soup_multipart_input_stream_read (GInputStream *stream,
static void
soup_multipart_input_stream_init (SoupMultipartInputStream *multipart)
{
- SoupMultipartInputStreamPrivate *priv;
- priv = multipart->priv = soup_multipart_input_stream_get_instance_private (multipart);
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
priv->meta_buf = g_byte_array_sized_new (RESPONSE_BLOCK_SIZE);
priv->done_with_part = FALSE;
@@ -211,15 +218,12 @@ soup_multipart_input_stream_init (SoupMultipartInputStream *multipart)
static void
soup_multipart_input_stream_constructed (GObject *object)
{
- SoupMultipartInputStream *multipart;
- SoupMultipartInputStreamPrivate *priv;
+ SoupMultipartInputStream *multipart = (SoupMultipartInputStream*)object;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
GInputStream *base_stream;
const char* boundary;
GHashTable *params = NULL;
- multipart = SOUP_MULTIPART_INPUT_STREAM (object);
- priv = multipart->priv;
-
base_stream = G_FILTER_INPUT_STREAM (multipart)->base_stream;
priv->base_stream = SOUP_FILTER_INPUT_STREAM (soup_filter_input_stream_new (base_stream));
@@ -248,7 +252,7 @@ static gboolean
soup_multipart_input_stream_is_readable (GPollableInputStream *stream)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (stream);
- SoupMultipartInputStreamPrivate *priv = multipart->priv;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
return g_pollable_input_stream_is_readable (G_POLLABLE_INPUT_STREAM (priv->base_stream));
}
@@ -271,7 +275,7 @@ soup_multipart_input_stream_create_source (GPollableInputStream *stream,
GCancellable *cancellable)
{
SoupMultipartInputStream *multipart = SOUP_MULTIPART_INPUT_STREAM (stream);
- SoupMultipartInputStreamPrivate *priv = multipart->priv;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
GSource *base_source, *pollable_source;
base_source = g_pollable_input_stream_create_source (G_POLLABLE_INPUT_STREAM (priv->base_stream), cancellable);
@@ -320,7 +324,7 @@ soup_multipart_input_stream_pollable_init (GPollableInputStreamInterface *pollab
static void
soup_multipart_input_stream_parse_headers (SoupMultipartInputStream *multipart)
{
- SoupMultipartInputStreamPrivate *priv = multipart->priv;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
gboolean success;
priv->current_headers = soup_message_headers_new (SOUP_MESSAGE_HEADERS_MULTIPART);
@@ -346,7 +350,7 @@ soup_multipart_input_stream_read_headers (SoupMultipartInputStream *multipart,
GCancellable *cancellable,
GError **error)
{
- SoupMultipartInputStreamPrivate *priv = multipart->priv;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
guchar read_buf[RESPONSE_BLOCK_SIZE];
guchar *buf;
gboolean got_boundary = FALSE;
@@ -465,12 +469,14 @@ soup_multipart_input_stream_next_part (SoupMultipartInputStream *multipart,
GCancellable *cancellable,
GError **error)
{
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
+
if (!soup_multipart_input_stream_read_headers (multipart, cancellable, error))
return NULL;
soup_multipart_input_stream_parse_headers (multipart);
- multipart->priv->done_with_part = FALSE;
+ priv->done_with_part = FALSE;
return G_INPUT_STREAM (g_object_new (SOUP_TYPE_BODY_INPUT_STREAM,
"base-stream", G_INPUT_STREAM (multipart),
@@ -587,5 +593,6 @@ soup_multipart_input_stream_next_part_finish (SoupMultipartInputStream *multipar
SoupMessageHeaders *
soup_multipart_input_stream_get_headers (SoupMultipartInputStream *multipart)
{
- return multipart->priv->current_headers;
+ SoupMultipartInputStreamPrivate *priv = soup_multipart_input_stream_get_instance_private (multipart);
+ return priv->current_headers;
}
diff --git a/libsoup/soup-multipart-input-stream.h b/libsoup/soup-multipart-input-stream.h
index e35dfdc3..4e7e3d02 100644
--- a/libsoup/soup-multipart-input-stream.h
+++ b/libsoup/soup-multipart-input-stream.h
@@ -3,38 +3,16 @@
* Copyright (C) 2012 Collabora Ltd.
*/
-#ifndef __SOUP_MULTIPART_INPUT_STREAM_H__
-#define __SOUP_MULTIPART_INPUT_STREAM_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-message-headers.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_MULTIPART_INPUT_STREAM (soup_multipart_input_stream_get_type ())
-#define SOUP_MULTIPART_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SOUP_TYPE_MULTIPART_INPUT_STREAM, SoupMultipartInputStream))
-#define SOUP_MULTIPART_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), SOUP_TYPE_MULTIPART_INPUT_STREAM, SoupMultipartInputStreamClass))
-#define SOUP_IS_MULTIPART_INPUT_STREAM(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SOUP_TYPE_MULTIPART_INPUT_STREAM))
-#define SOUP_IS_MULTIPART_INPUT_STREAM_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SOUP_TYPE_MULTIPART_INPUT_STREAM))
-#define SOUP_MULTIPART_INPUT_STREAM_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SOUP_TYPE_MULTIPART_INPUT_STREAM, SoupMultipartInputStreamClass))
-
-typedef struct _SoupMultipartInputStream SoupMultipartInputStream;
-typedef struct _SoupMultipartInputStreamPrivate SoupMultipartInputStreamPrivate;
-typedef struct _SoupMultipartInputStreamClass SoupMultipartInputStreamClass;
-
-struct _SoupMultipartInputStream {
- GFilterInputStream parent_instance;
-
- /*< private >*/
- SoupMultipartInputStreamPrivate *priv;
-};
-
-struct _SoupMultipartInputStreamClass {
- GFilterInputStreamClass parent_class;
-};
-
+#define SOUP_TYPE_MULTIPART_INPUT_STREAM (soup_multipart_input_stream_get_type ())
SOUP_AVAILABLE_IN_2_40
-GType soup_multipart_input_stream_get_type (void) G_GNUC_CONST;
+G_DECLARE_FINAL_TYPE (SoupMultipartInputStream, soup_multipart_input_stream, SOUP, MULTIPART_INPUT_STREAM, GFilterInputStream)
SOUP_AVAILABLE_IN_2_40
SoupMultipartInputStream *soup_multipart_input_stream_new (SoupMessage *msg,
@@ -62,5 +40,3 @@ SoupMessageHeaders *soup_multipart_input_stream_get_headers (SoupMult
G_END_DECLS
-
-#endif /* __SOUP_MULTIPART_INPUT_STREAM_H__ */
diff --git a/libsoup/soup-multipart.h b/libsoup/soup-multipart.h
index e37aae44..22675c39 100644
--- a/libsoup/soup-multipart.h
+++ b/libsoup/soup-multipart.h
@@ -3,8 +3,7 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_MULTIPART_H__
-#define __SOUP_MULTIPART_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-message-body.h"
@@ -56,6 +55,6 @@ void soup_multipart_to_message (SoupMultipart *multipart,
SOUP_AVAILABLE_IN_2_26
void soup_multipart_free (SoupMultipart *multipart);
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupMultipart, soup_multipart_free)
-#endif /* __SOUP_MULTIPART_H__ */
+G_END_DECLS
diff --git a/libsoup/soup-request-data.c b/libsoup/soup-request-data.c
index 7bdffd89..897ad2a6 100644
--- a/libsoup/soup-request-data.c
+++ b/libsoup/soup-request-data.c
@@ -38,26 +38,29 @@
* #SoupRequestData implements #SoupRequest for "data" URIs.
*/
+struct _SoupRequestData {
+ SoupRequest parent;
+};
-struct _SoupRequestDataPrivate {
+typedef struct {
gsize content_length;
char *content_type;
-};
+} SoupRequestDataPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SoupRequestData, soup_request_data, SOUP_TYPE_REQUEST)
static void
soup_request_data_init (SoupRequestData *data)
{
- data->priv = soup_request_data_get_instance_private (data);
}
static void
soup_request_data_finalize (GObject *object)
{
SoupRequestData *data = SOUP_REQUEST_DATA (object);
+ SoupRequestDataPrivate *priv = soup_request_data_get_instance_private (data);
- g_free (data->priv->content_type);
+ g_free (priv->content_type);
G_OBJECT_CLASS (soup_request_data_parent_class)->finalize (object);
}
@@ -79,6 +82,7 @@ soup_request_data_send (SoupRequest *request,
GError **error)
{
SoupRequestData *data = SOUP_REQUEST_DATA (request);
+ SoupRequestDataPrivate *priv = soup_request_data_get_instance_private (data);
SoupURI *uri = soup_request_get_uri (request);
GInputStream *memstream;
const char *comma, *start, *end;
@@ -97,7 +101,7 @@ soup_request_data_send (SoupRequest *request,
end = comma;
if (end != start)
- data->priv->content_type = soup_uri_decoded_copy (start, end - start, NULL);
+ priv->content_type = soup_uri_decoded_copy (start, end - start, NULL);
}
memstream = g_memory_input_stream_new ();
@@ -111,12 +115,12 @@ soup_request_data_send (SoupRequest *request,
&decoded_length);
if (base64)
- buf = g_base64_decode_inplace ((gchar*) buf, &data->priv->content_length);
+ buf = g_base64_decode_inplace ((gchar*) buf, &priv->content_length);
else
- data->priv->content_length = decoded_length;
+ priv->content_length = decoded_length;
g_memory_input_stream_add_data (G_MEMORY_INPUT_STREAM (memstream),
- buf, data->priv->content_length,
+ buf, priv->content_length,
g_free);
}
g_free (uristr);
@@ -128,17 +132,19 @@ static goffset
soup_request_data_get_content_length (SoupRequest *request)
{
SoupRequestData *data = SOUP_REQUEST_DATA (request);
+ SoupRequestDataPrivate *priv = soup_request_data_get_instance_private (data);
- return data->priv->content_length;
+ return priv->content_length;
}
static const char *
soup_request_data_get_content_type (SoupRequest *request)
{
SoupRequestData *data = SOUP_REQUEST_DATA (request);
+ SoupRequestDataPrivate *priv = soup_request_data_get_instance_private (data);
- if (data->priv->content_type)
- return data->priv->content_type;
+ if (priv->content_type)
+ return priv->content_type;
else
return "text/plain;charset=US-ASCII";
}
diff --git a/libsoup/soup-request-data.h b/libsoup/soup-request-data.h
index 154a904a..27dc1fe5 100644
--- a/libsoup/soup-request-data.h
+++ b/libsoup/soup-request-data.h
@@ -19,35 +19,14 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_REQUEST_DATA_H__
-#define __SOUP_REQUEST_DATA_H__ 1
+#pragma once
#include "soup-request.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_REQUEST_DATA (soup_request_data_get_type ())
-#define SOUP_REQUEST_DATA(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_REQUEST_DATA, SoupRequestData))
-#define SOUP_REQUEST_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_REQUEST_DATA, SoupRequestDataClass))
-#define SOUP_IS_REQUEST_DATA(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_REQUEST_DATA))
-#define SOUP_IS_REQUEST_DATA_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_REQUEST_DATA))
-#define SOUP_REQUEST_DATA_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_REQUEST_DATA, SoupRequestDataClass))
-
-typedef struct _SoupRequestDataPrivate SoupRequestDataPrivate;
-
-typedef struct {
- SoupRequest parent;
-
- SoupRequestDataPrivate *priv;
-} SoupRequestData;
-
-typedef struct {
- SoupRequestClass parent;
-} SoupRequestDataClass;
-
+#define SOUP_TYPE_REQUEST_DATA (soup_request_data_get_type ())
SOUP_AVAILABLE_IN_2_34
-GType soup_request_data_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupRequestData, soup_request_data, SOUP, REQUEST_DATA, SoupRequest)
G_END_DECLS
-
-#endif /* __SOUP_REQUEST_DATA_H__ */
diff --git a/libsoup/soup-request-file.c b/libsoup/soup-request-file.c
index cdd5d673..740b52a9 100644
--- a/libsoup/soup-request-file.c
+++ b/libsoup/soup-request-file.c
@@ -39,30 +39,35 @@
* URIs.
*/
-struct _SoupRequestFilePrivate {
+struct _SoupRequestFile {
+ SoupRequest parent;
+};
+
+typedef struct {
GFile *gfile;
char *mime_type;
goffset size;
-};
+} SoupRequestFilePrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SoupRequestFile, soup_request_file, SOUP_TYPE_REQUEST)
static void
soup_request_file_init (SoupRequestFile *file)
{
- file->priv = soup_request_file_get_instance_private (file);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- file->priv->size = -1;
+ priv->size = -1;
}
static void
soup_request_file_finalize (GObject *object)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (object);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- g_clear_object (&file->priv->gfile);
- g_free (file->priv->mime_type);
+ g_clear_object (&priv->gfile);
+ g_free (priv->mime_type);
G_OBJECT_CLASS (soup_request_file_parent_class)->finalize (object);
}
@@ -121,10 +126,11 @@ soup_request_file_ensure_file (SoupRequestFile *file,
GCancellable *cancellable,
GError **error)
{
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
SoupURI *uri;
char *decoded_path;
- if (file->priv->gfile)
+ if (priv->gfile)
return TRUE;
uri = soup_request_get_uri (SOUP_REQUEST (file));
@@ -138,10 +144,10 @@ soup_request_file_ensure_file (SoupRequestFile *file,
char *uri_str;
uri_str = g_strdup_printf ("resource://%s", decoded_path);
- file->priv->gfile = g_file_new_for_uri (uri_str);
+ priv->gfile = g_file_new_for_uri (uri_str);
g_free (uri_str);
} else
- file->priv->gfile = g_file_new_for_path (decoded_path);
+ priv->gfile = g_file_new_for_path (decoded_path);
g_free (decoded_path);
return TRUE;
@@ -153,19 +159,20 @@ soup_request_file_send (SoupRequest *request,
GError **error)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream;
GError *my_error = NULL;
if (!soup_request_file_ensure_file (file, cancellable, error))
return NULL;
- stream = G_INPUT_STREAM (g_file_read (file->priv->gfile,
+ stream = G_INPUT_STREAM (g_file_read (priv->gfile,
cancellable, &my_error));
if (stream == NULL) {
if (g_error_matches (my_error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY)) {
GFileEnumerator *enumerator;
g_clear_error (&my_error);
- enumerator = g_file_enumerate_children (file->priv->gfile,
+ enumerator = g_file_enumerate_children (priv->gfile,
"*",
G_FILE_QUERY_INFO_NONE,
cancellable,
@@ -174,22 +181,22 @@ soup_request_file_send (SoupRequest *request,
stream = soup_directory_input_stream_new (enumerator,
soup_request_get_uri (request));
g_object_unref (enumerator);
- file->priv->mime_type = g_strdup ("text/html");
+ priv->mime_type = g_strdup ("text/html");
}
} else
g_propagate_error (error, my_error);
} else {
- GFileInfo *info = g_file_query_info (file->priv->gfile,
+ GFileInfo *info = g_file_query_info (priv->gfile,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_SIZE,
0, cancellable, NULL);
if (info) {
const char *content_type;
- file->priv->size = g_file_info_get_size (info);
+ priv->size = g_file_info_get_size (info);
content_type = g_file_info_get_content_type (info);
if (content_type)
- file->priv->mime_type = g_content_type_get_mime_type (content_type);
+ priv->mime_type = g_content_type_get_mime_type (content_type);
g_object_unref (info);
}
}
@@ -204,6 +211,7 @@ on_enumerate_children_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GFileEnumerator *enumerator;
GError *error = NULL;
@@ -216,7 +224,7 @@ on_enumerate_children_ready (GObject *source,
stream = soup_directory_input_stream_new (enumerator,
soup_request_get_uri (SOUP_REQUEST (file)));
g_object_unref (enumerator);
- file->priv->mime_type = g_strdup ("text/html");
+ priv->mime_type = g_strdup ("text/html");
g_task_return_pointer (task, stream, g_object_unref);
}
@@ -231,6 +239,7 @@ on_query_info_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream = G_INPUT_STREAM (g_task_get_task_data (task));
GFileInfo *info;
GError *error = NULL;
@@ -239,11 +248,11 @@ on_query_info_ready (GObject *source,
if (info) {
const char *content_type;
- file->priv->size = g_file_info_get_size (info);
+ priv->size = g_file_info_get_size (info);
content_type = g_file_info_get_content_type (info);
if (content_type)
- file->priv->mime_type = g_content_type_get_mime_type (content_type);
+ priv->mime_type = g_content_type_get_mime_type (content_type);
g_object_unref (info);
}
@@ -258,13 +267,14 @@ on_read_file_ready (GObject *source,
{
GTask *task = G_TASK (user_data);
SoupRequestFile *file = SOUP_REQUEST_FILE (g_task_get_source_object (task));
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GInputStream *stream;
GError *error = NULL;
stream = G_INPUT_STREAM (g_file_read_finish (G_FILE (source), result, &error));
if (stream == NULL) {
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_IS_DIRECTORY)) {
- g_file_enumerate_children_async (file->priv->gfile,
+ g_file_enumerate_children_async (priv->gfile,
"*",
G_FILE_QUERY_INFO_NONE,
G_PRIORITY_DEFAULT,
@@ -278,7 +288,7 @@ on_read_file_ready (GObject *source,
}
} else {
g_task_set_task_data (task, stream, g_object_unref);
- g_file_query_info_async (file->priv->gfile,
+ g_file_query_info_async (priv->gfile,
G_FILE_ATTRIBUTE_STANDARD_CONTENT_TYPE ","
G_FILE_ATTRIBUTE_STANDARD_SIZE,
0,
@@ -296,6 +306,7 @@ soup_request_file_send_async (SoupRequest *request,
gpointer user_data)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
GTask *task;
GError *error = NULL;
@@ -307,7 +318,7 @@ soup_request_file_send_async (SoupRequest *request,
return;
}
- g_file_read_async (file->priv->gfile,
+ g_file_read_async (priv->gfile,
G_PRIORITY_DEFAULT,
cancellable,
on_read_file_ready,
@@ -328,19 +339,20 @@ static goffset
soup_request_file_get_content_length (SoupRequest *request)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
-
- return file->priv->size;
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
+ return priv->size;
}
static const char *
soup_request_file_get_content_type (SoupRequest *request)
{
SoupRequestFile *file = SOUP_REQUEST_FILE (request);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
- if (!file->priv->mime_type)
+ if (!priv->mime_type)
return "application/octet-stream";
- return file->priv->mime_type;
+ return priv->mime_type;
}
static const char *file_schemes[] = { "file", "resource", NULL };
@@ -377,5 +389,6 @@ soup_request_file_class_init (SoupRequestFileClass *request_file_class)
GFile *
soup_request_file_get_file (SoupRequestFile *file)
{
- return g_object_ref (file->priv->gfile);
+ SoupRequestFilePrivate *priv = soup_request_file_get_instance_private (file);
+ return g_object_ref (priv->gfile);
}
diff --git a/libsoup/soup-request-file.h b/libsoup/soup-request-file.h
index cc70c9f4..02688224 100644
--- a/libsoup/soup-request-file.h
+++ b/libsoup/soup-request-file.h
@@ -19,38 +19,17 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_REQUEST_FILE_H__
-#define __SOUP_REQUEST_FILE_H__ 1
+#pragma once
#include "soup-request.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_REQUEST_FILE (soup_request_file_get_type ())
-#define SOUP_REQUEST_FILE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_REQUEST_FILE, SoupRequestFile))
-#define SOUP_REQUEST_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_REQUEST_FILE, SoupRequestFileClass))
-#define SOUP_IS_REQUEST_FILE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_REQUEST_FILE))
-#define SOUP_IS_REQUEST_FILE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_REQUEST_FILE))
-#define SOUP_REQUEST_FILE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_REQUEST_FILE, SoupRequestFileClass))
-
-typedef struct _SoupRequestFilePrivate SoupRequestFilePrivate;
-
-typedef struct {
- SoupRequest parent;
-
- SoupRequestFilePrivate *priv;
-} SoupRequestFile;
-
-typedef struct {
- SoupRequestClass parent;
-} SoupRequestFileClass;
-
+#define SOUP_TYPE_REQUEST_FILE (soup_request_file_get_type ())
SOUP_AVAILABLE_IN_2_34
-GType soup_request_file_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupRequestFile, soup_request_file, SOUP, REQUEST_FILE, SoupRequest)
SOUP_AVAILABLE_IN_2_34
GFile *soup_request_file_get_file (SoupRequestFile *file);
G_END_DECLS
-
-#endif /* __SOUP_REQUEST_FILE_H__ */
diff --git a/libsoup/soup-request-http.c b/libsoup/soup-request-http.c
index efdea6fe..d4a4cd87 100644
--- a/libsoup/soup-request-http.c
+++ b/libsoup/soup-request-http.c
@@ -44,10 +44,14 @@
* #SoupMessage.
*/
-struct _SoupRequestHTTPPrivate {
+struct _SoupRequestHTTP {
+ SoupRequest parent;
+};
+
+typedef struct {
SoupMessage *msg;
char *content_type;
-};
+} SoupRequestHTTPPrivate;
G_DEFINE_TYPE_WITH_PRIVATE (SoupRequestHTTP, soup_request_http, SOUP_TYPE_REQUEST)
@@ -59,7 +63,6 @@ static void content_sniffed (SoupMessage *msg,
static void
soup_request_http_init (SoupRequestHTTP *http)
{
- http->priv = soup_request_http_get_instance_private (http);
}
static gboolean
@@ -68,14 +71,15 @@ soup_request_http_check_uri (SoupRequest *request,
GError **error)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (request);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
if (!SOUP_URI_VALID_FOR_HTTP (uri))
return FALSE;
- http->priv->msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
- soup_message_set_soup_request (http->priv->msg, request);
+ priv->msg = soup_message_new_from_uri (SOUP_METHOD_GET, uri);
+ soup_message_set_soup_request (priv->msg, request);
- g_signal_connect (http->priv->msg, "content-sniffed",
+ g_signal_connect (priv->msg, "content-sniffed",
G_CALLBACK (content_sniffed), http);
return TRUE;
}
@@ -84,15 +88,16 @@ static void
soup_request_http_finalize (GObject *object)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (object);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
- if (http->priv->msg) {
- g_signal_handlers_disconnect_by_func (http->priv->msg,
+ if (priv->msg) {
+ g_signal_handlers_disconnect_by_func (priv->msg,
G_CALLBACK (content_sniffed),
http);
- g_object_unref (http->priv->msg);
+ g_object_unref (priv->msg);
}
- g_free (http->priv->content_type);
+ g_free (priv->content_type);
G_OBJECT_CLASS (soup_request_http_parent_class)->finalize (object);
}
@@ -103,9 +108,10 @@ soup_request_http_send (SoupRequest *request,
GError **error)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (request);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
SoupSession *session = soup_request_get_session (request);
- return soup_session_send (session, http->priv->msg,
+ return soup_session_send (session, priv->msg,
cancellable, error);
}
@@ -132,11 +138,12 @@ soup_request_http_send_async (SoupRequest *request,
gpointer user_data)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (request);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
SoupSession *session = soup_request_get_session (request);
GTask *task;
task = g_task_new (request, cancellable, callback, user_data);
- soup_session_send_async (session, http->priv->msg, cancellable,
+ soup_session_send_async (session, priv->msg, cancellable,
http_input_stream_ready_cb, task);
}
@@ -154,8 +161,9 @@ static goffset
soup_request_http_get_content_length (SoupRequest *request)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (request);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
- return soup_message_headers_get_content_length (http->priv->msg->response_headers);
+ return soup_message_headers_get_content_length (priv->msg->response_headers);
}
static void
@@ -165,6 +173,7 @@ content_sniffed (SoupMessage *msg,
gpointer user_data)
{
SoupRequestHTTP *http = user_data;
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
GString *sniffed_type;
sniffed_type = g_string_new (content_type);
@@ -178,16 +187,17 @@ content_sniffed (SoupMessage *msg,
soup_header_g_string_append_param (sniffed_type, key, value);
}
}
- g_free (http->priv->content_type);
- http->priv->content_type = g_string_free (sniffed_type, FALSE);
+ g_free (priv->content_type);
+ priv->content_type = g_string_free (sniffed_type, FALSE);
}
static const char *
soup_request_http_get_content_type (SoupRequest *request)
{
SoupRequestHTTP *http = SOUP_REQUEST_HTTP (request);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
- return http->priv->content_type;
+ return priv->content_type;
}
static const char *http_schemes[] = { "http", "https", NULL };
@@ -225,6 +235,7 @@ SoupMessage *
soup_request_http_get_message (SoupRequestHTTP *http)
{
g_return_val_if_fail (SOUP_IS_REQUEST_HTTP (http), NULL);
+ SoupRequestHTTPPrivate *priv = soup_request_http_get_instance_private (http);
- return g_object_ref (http->priv->msg);
+ return g_object_ref (priv->msg);
}
diff --git a/libsoup/soup-request-http.h b/libsoup/soup-request-http.h
index 3a32febd..c61c496e 100644
--- a/libsoup/soup-request-http.h
+++ b/libsoup/soup-request-http.h
@@ -19,38 +19,17 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_REQUEST_HTTP_H__
-#define __SOUP_REQUEST_HTTP_H__ 1
+#pragma once
#include "soup-request.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_REQUEST_HTTP (soup_request_http_get_type ())
-#define SOUP_REQUEST_HTTP(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_REQUEST_HTTP, SoupRequestHTTP))
-#define SOUP_REQUEST_HTTP_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_REQUEST_HTTP, SoupRequestHTTPClass))
-#define SOUP_IS_REQUEST_HTTP(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_REQUEST_HTTP))
-#define SOUP_IS_REQUEST_HTTP_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_REQUEST_HTTP))
-#define SOUP_REQUEST_HTTP_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_REQUEST_HTTP, SoupRequestHTTPClass))
-
-typedef struct _SoupRequestHTTPPrivate SoupRequestHTTPPrivate;
-
-struct _SoupRequestHTTP {
- SoupRequest parent;
-
- SoupRequestHTTPPrivate *priv;
-};
-
-typedef struct {
- SoupRequestClass parent;
-} SoupRequestHTTPClass;
-
+#define SOUP_TYPE_REQUEST_HTTP (soup_request_http_get_type ())
SOUP_AVAILABLE_IN_2_34
-GType soup_request_http_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupRequestHTTP, soup_request_http, SOUP, REQUEST_HTTP, SoupRequest)
SOUP_AVAILABLE_IN_2_34
SoupMessage *soup_request_http_get_message (SoupRequestHTTP *http);
G_END_DECLS
-
-#endif /* __SOUP_REQUEST_HTTP_H__ */
diff --git a/libsoup/soup-request.c b/libsoup/soup-request.c
index b06d4aea..8b04ae5c 100644
--- a/libsoup/soup-request.c
+++ b/libsoup/soup-request.c
@@ -52,10 +52,10 @@ enum {
PROP_SESSION
};
-struct _SoupRequestPrivate {
+typedef struct {
SoupURI *uri;
SoupSession *session;
-};
+} SoupRequestPrivate;
static void soup_request_initable_interface_init (GInitableIface *initable_interface);
@@ -67,16 +67,16 @@ G_DEFINE_TYPE_WITH_CODE (SoupRequest, soup_request, G_TYPE_OBJECT,
static void
soup_request_init (SoupRequest *request)
{
- request->priv = soup_request_get_instance_private (request);
}
static void
soup_request_finalize (GObject *object)
{
SoupRequest *request = SOUP_REQUEST (object);
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
- g_clear_pointer (&request->priv->uri, soup_uri_free);
- g_clear_object (&request->priv->session);
+ g_clear_pointer (&priv->uri, soup_uri_free);
+ g_clear_object (&priv->session);
G_OBJECT_CLASS (soup_request_parent_class)->finalize (object);
}
@@ -88,17 +88,18 @@ soup_request_set_property (GObject *object,
GParamSpec *pspec)
{
SoupRequest *request = SOUP_REQUEST (object);
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
switch (prop_id) {
case PROP_URI:
- if (request->priv->uri)
- soup_uri_free (request->priv->uri);
- request->priv->uri = g_value_dup_boxed (value);
+ if (priv->uri)
+ soup_uri_free (priv->uri);
+ priv->uri = g_value_dup_boxed (value);
break;
case PROP_SESSION:
- if (request->priv->session)
- g_object_unref (request->priv->session);
- request->priv->session = g_value_dup_object (value);
+ if (priv->session)
+ g_object_unref (priv->session);
+ priv->session = g_value_dup_object (value);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -113,13 +114,14 @@ soup_request_get_property (GObject *object,
GParamSpec *pspec)
{
SoupRequest *request = SOUP_REQUEST (object);
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
switch (prop_id) {
case PROP_URI:
- g_value_set_boxed (value, request->priv->uri);
+ g_value_set_boxed (value, priv->uri);
break;
case PROP_SESSION:
- g_value_set_object (value, request->priv->session);
+ g_value_set_object (value, priv->session);
break;
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, prop_id, pspec);
@@ -133,22 +135,23 @@ soup_request_initable_init (GInitable *initable,
GError **error)
{
SoupRequest *request = SOUP_REQUEST (initable);
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
gboolean ok;
- if (!request->priv->uri) {
+ if (!priv->uri) {
g_set_error (error, SOUP_REQUEST_ERROR, SOUP_REQUEST_ERROR_BAD_URI,
_("No URI provided"));
return FALSE;
}
ok = SOUP_REQUEST_GET_CLASS (initable)->
- check_uri (request, request->priv->uri, error);
+ check_uri (request, priv->uri, error);
if (!ok && error && !*error) {
- char *uri_string = soup_uri_to_string (request->priv->uri, FALSE);
+ char *uri_string = soup_uri_to_string (priv->uri, FALSE);
g_set_error (error, SOUP_REQUEST_ERROR, SOUP_REQUEST_ERROR_BAD_URI,
_("Invalid “%s” URI: %s"),
- request->priv->uri->scheme,
+ priv->uri->scheme,
uri_string);
g_free (uri_string);
}
@@ -341,7 +344,8 @@ soup_request_initable_interface_init (GInitableIface *initable_interface)
SoupURI *
soup_request_get_uri (SoupRequest *request)
{
- return request->priv->uri;
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
+ return priv->uri;
}
/**
@@ -357,7 +361,8 @@ soup_request_get_uri (SoupRequest *request)
SoupSession *
soup_request_get_session (SoupRequest *request)
{
- return request->priv->session;
+ SoupRequestPrivate *priv = soup_request_get_instance_private (request);
+ return priv->session;
}
/**
diff --git a/libsoup/soup-request.h b/libsoup/soup-request.h
index 6a6e94fa..fbb6b22a 100644
--- a/libsoup/soup-request.h
+++ b/libsoup/soup-request.h
@@ -19,8 +19,7 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_REQUEST_H__
-#define __SOUP_REQUEST_H__ 1
+#pragma once
#include <gio/gio.h>
@@ -28,21 +27,9 @@
G_BEGIN_DECLS
-#define SOUP_TYPE_REQUEST (soup_request_get_type ())
-#define SOUP_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_REQUEST, SoupRequest))
-#define SOUP_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_REQUEST, SoupRequestClass))
-#define SOUP_IS_REQUEST(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_REQUEST))
-#define SOUP_IS_REQUEST_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_REQUEST))
-#define SOUP_REQUEST_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_REQUEST, SoupRequestClass))
-
-typedef struct _SoupRequestPrivate SoupRequestPrivate;
-typedef struct _SoupRequestClass SoupRequestClass;
-
-struct _SoupRequest {
- GObject parent;
-
- SoupRequestPrivate *priv;
-};
+#define SOUP_TYPE_REQUEST (soup_request_get_type ())
+SOUP_AVAILABLE_IN_2_34
+G_DECLARE_DERIVABLE_TYPE (SoupRequest, soup_request, SOUP, REQUEST, GObject)
struct _SoupRequestClass {
GObjectClass parent;
@@ -68,9 +55,6 @@ struct _SoupRequestClass {
const char * (*get_content_type) (SoupRequest *request);
};
-SOUP_AVAILABLE_IN_2_34
-GType soup_request_get_type (void);
-
#define SOUP_REQUEST_URI "uri"
#define SOUP_REQUEST_SESSION "session"
@@ -99,5 +83,3 @@ SOUP_AVAILABLE_IN_2_34
const char *soup_request_get_content_type (SoupRequest *request);
G_END_DECLS
-
-#endif /* __SOUP_REQUEST_H__ */
diff --git a/libsoup/soup-server.h b/libsoup/soup-server.h
index 9caea25d..4ede834d 100644
--- a/libsoup/soup-server.h
+++ b/libsoup/soup-server.h
@@ -3,8 +3,7 @@
* Copyright (C) 2000-2003, Ximian, Inc.
*/
-#ifndef __SOUP_SERVER_H__
-#define __SOUP_SERVER_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-uri.h"
@@ -12,12 +11,9 @@
G_BEGIN_DECLS
-#define SOUP_TYPE_SERVER (soup_server_get_type ())
-#define SOUP_SERVER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SERVER, SoupServer))
-#define SOUP_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SERVER, SoupServerClass))
-#define SOUP_IS_SERVER(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SERVER))
-#define SOUP_IS_SERVER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SERVER))
-#define SOUP_SERVER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SERVER, SoupServerClass))
+#define SOUP_TYPE_SERVER (soup_server_get_type ())
+SOUP_AVAILABLE_IN_2_4
+G_DECLARE_DERIVABLE_TYPE (SoupServer, soup_server, SOUP, SERVER, GObject)
typedef struct SoupClientContext SoupClientContext;
SOUP_AVAILABLE_IN_2_4
@@ -30,12 +26,7 @@ typedef enum {
SOUP_SERVER_LISTEN_IPV6_ONLY = (1 << 2)
} SoupServerListenOptions;
-struct _SoupServer {
- GObject parent;
-
-};
-
-typedef struct {
+struct _SoupServerClass {
GObjectClass parent_class;
/* signals */
@@ -48,15 +39,8 @@ typedef struct {
void (*request_aborted) (SoupServer *server, SoupMessage *msg,
SoupClientContext *client);
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupServerClass;
-
-SOUP_AVAILABLE_IN_2_4
-GType soup_server_get_type (void);
+ gpointer padding[6];
+};
#define SOUP_SERVER_TLS_CERTIFICATE "tls-certificate"
#define SOUP_SERVER_RAW_PATHS "raw-paths"
@@ -194,5 +178,3 @@ SOUP_AVAILABLE_IN_2_50
GIOStream *soup_client_context_steal_connection (SoupClientContext *client);
G_END_DECLS
-
-#endif /* __SOUP_SERVER_H__ */
diff --git a/libsoup/soup-session-feature.c b/libsoup/soup-session-feature.c
index 7b9a3a83..a25313b7 100644
--- a/libsoup/soup-session-feature.c
+++ b/libsoup/soup-session-feature.c
@@ -67,8 +67,8 @@ request_queued (SoupSession *session, SoupMessage *msg, gpointer feature)
return;
g_object_ref (feature);
- if (SOUP_SESSION_FEATURE_GET_CLASS (feature)->request_queued) {
- SOUP_SESSION_FEATURE_GET_CLASS (feature)->
+ if (SOUP_SESSION_FEATURE_GET_IFACE (feature)->request_queued) {
+ SOUP_SESSION_FEATURE_GET_IFACE (feature)->
request_queued (feature, session, msg);
}
}
@@ -79,7 +79,7 @@ request_started (SoupSession *session, SoupMessage *msg, gpointer feature)
if (soup_message_disables_feature (msg, feature))
return;
- SOUP_SESSION_FEATURE_GET_CLASS (feature)->
+ SOUP_SESSION_FEATURE_GET_IFACE (feature)->
request_started (feature, session, msg);
}
@@ -89,8 +89,8 @@ request_unqueued (SoupSession *session, SoupMessage *msg, gpointer feature)
if (soup_message_disables_feature (msg, feature))
return;
- if (SOUP_SESSION_FEATURE_GET_CLASS (feature)->request_unqueued) {
- SOUP_SESSION_FEATURE_GET_CLASS (feature)->
+ if (SOUP_SESSION_FEATURE_GET_IFACE (feature)->request_unqueued) {
+ SOUP_SESSION_FEATURE_GET_IFACE (feature)->
request_unqueued (feature, session, msg);
}
g_object_unref (feature);
@@ -105,7 +105,7 @@ soup_session_feature_real_attach (SoupSessionFeature *feature, SoupSession *sess
g_signal_connect (session, "request_queued",
G_CALLBACK (request_queued), feature);
- if (SOUP_SESSION_FEATURE_GET_CLASS (feature)->request_started) {
+ if (SOUP_SESSION_FEATURE_GET_IFACE (feature)->request_started) {
g_signal_connect (session, "request_started",
G_CALLBACK (request_started), feature);
}
@@ -121,7 +121,7 @@ soup_session_feature_attach (SoupSessionFeature *feature,
g_return_if_fail (SOUP_IS_SESSION_FEATURE (feature));
g_return_if_fail (SOUP_IS_SESSION (session));
- SOUP_SESSION_FEATURE_GET_CLASS (feature)->attach (feature, session);
+ SOUP_SESSION_FEATURE_GET_IFACE (feature)->attach (feature, session);
}
static void
@@ -143,7 +143,7 @@ soup_session_feature_detach (SoupSessionFeature *feature,
g_return_if_fail (SOUP_IS_SESSION_FEATURE (feature));
g_return_if_fail (SOUP_IS_SESSION (session));
- SOUP_SESSION_FEATURE_GET_CLASS (feature)->detach (feature, session);
+ SOUP_SESSION_FEATURE_GET_IFACE (feature)->detach (feature, session);
}
static void
@@ -172,7 +172,7 @@ soup_session_feature_add_feature (SoupSessionFeature *feature,
GType type)
{
SoupSessionFeatureInterface *feature_iface =
- SOUP_SESSION_FEATURE_GET_CLASS (feature);
+ SOUP_SESSION_FEATURE_GET_IFACE (feature);
if (feature_iface->add_feature)
return feature_iface->add_feature (feature, type);
@@ -197,7 +197,7 @@ soup_session_feature_remove_feature (SoupSessionFeature *feature,
GType type)
{
SoupSessionFeatureInterface *feature_iface =
- SOUP_SESSION_FEATURE_GET_CLASS (feature);
+ SOUP_SESSION_FEATURE_GET_IFACE (feature);
if (feature_iface->remove_feature)
return feature_iface->remove_feature (feature, type);
@@ -222,7 +222,7 @@ soup_session_feature_has_feature (SoupSessionFeature *feature,
GType type)
{
SoupSessionFeatureInterface *feature_iface =
- SOUP_SESSION_FEATURE_GET_CLASS (feature);
+ SOUP_SESSION_FEATURE_GET_IFACE (feature);
if (feature_iface->has_feature)
return feature_iface->has_feature (feature, type);
diff --git a/libsoup/soup-session-feature.h b/libsoup/soup-session-feature.h
index 4ce7825f..929f93a1 100644
--- a/libsoup/soup-session-feature.h
+++ b/libsoup/soup-session-feature.h
@@ -3,21 +3,17 @@
* Copyright (C) 2008 Red Hat, Inc.
*/
-#ifndef __SOUP_SESSION_FEATURE_H__
-#define __SOUP_SESSION_FEATURE_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_SESSION_FEATURE (soup_session_feature_get_type ())
-#define SOUP_SESSION_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeature))
-#define SOUP_SESSION_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeatureInterface))
-#define SOUP_IS_SESSION_FEATURE(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SESSION_FEATURE))
-#define SOUP_IS_SESSION_FEATURE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_SESSION_FEATURE))
-#define SOUP_SESSION_FEATURE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_INTERFACE ((obj), SOUP_TYPE_SESSION_FEATURE, SoupSessionFeatureInterface))
+#define SOUP_TYPE_SESSION_FEATURE (soup_session_feature_get_type ())
+SOUP_AVAILABLE_IN_2_24
+G_DECLARE_INTERFACE (SoupSessionFeature, soup_session_feature, SOUP, SESSION_FEATURE, GObject)
-typedef struct {
+struct _SoupSessionFeatureInterface {
GTypeInterface parent;
/* methods */
@@ -43,10 +39,7 @@ typedef struct {
gboolean (*has_feature) (SoupSessionFeature *feature,
GType type);
-} SoupSessionFeatureInterface;
-
-SOUP_AVAILABLE_IN_2_24
-GType soup_session_feature_get_type (void);
+};
SOUP_AVAILABLE_IN_2_24
void soup_session_feature_attach (SoupSessionFeature *feature,
@@ -66,5 +59,3 @@ gboolean soup_session_feature_has_feature (SoupSessionFeature *feature,
GType type);
G_END_DECLS
-
-#endif /* __SOUP_SESSION_FEATURE_H__ */
diff --git a/libsoup/soup-session.c b/libsoup/soup-session.c
index e358df31..d4c75d85 100644
--- a/libsoup/soup-session.c
+++ b/libsoup/soup-session.c
@@ -14,6 +14,7 @@
#include "soup-session.h"
#include "soup.h"
#include "auth/soup-auth-manager.h"
+#include "auth/soup-auth-ntlm.h"
#include "cache/soup-cache-private.h"
#include "soup-connection.h"
#include "soup-message-private.h"
@@ -81,6 +82,10 @@ typedef struct {
static guint soup_host_uri_hash (gconstpointer key);
static gboolean soup_host_uri_equal (gconstpointer v1, gconstpointer v2);
+struct _SoupSession {
+ GObject parent;
+};
+
typedef struct {
gboolean disposed;
@@ -2626,7 +2631,7 @@ soup_session_class_init (SoupSessionClass *session_class)
g_signal_new ("request-started",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (SoupSessionClass, request_started),
+ 0,
NULL, NULL,
NULL,
G_TYPE_NONE, 1,
@@ -2681,7 +2686,7 @@ soup_session_class_init (SoupSessionClass *session_class)
g_signal_new ("authenticate",
G_OBJECT_CLASS_TYPE (object_class),
G_SIGNAL_RUN_FIRST,
- G_STRUCT_OFFSET (SoupSessionClass, authenticate),
+ 0,
NULL, NULL,
NULL,
G_TYPE_NONE, 3,
diff --git a/libsoup/soup-session.h b/libsoup/soup-session.h
index af2d42ca..1879b36d 100644
--- a/libsoup/soup-session.h
+++ b/libsoup/soup-session.h
@@ -3,8 +3,7 @@
* Copyright (C) 2000-2003, Ximian, Inc.
*/
-#ifndef __SOUP_SESSION_H__
-#define __SOUP_SESSION_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-message.h"
@@ -12,42 +11,14 @@
G_BEGIN_DECLS
-#define SOUP_TYPE_SESSION (soup_session_get_type ())
-#define SOUP_SESSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_SESSION, SoupSession))
-#define SOUP_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_SESSION, SoupSessionClass))
-#define SOUP_IS_SESSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_SESSION))
-#define SOUP_IS_SESSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_SESSION))
-#define SOUP_SESSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_SESSION, SoupSessionClass))
+#define SOUP_TYPE_SESSION soup_session_get_type ()
+SOUP_AVAILABLE_IN_2_42
+G_DECLARE_FINAL_TYPE (SoupSession, soup_session, SOUP, SESSION, GObject)
typedef void (*SoupSessionCallback) (SoupSession *session,
SoupMessage *msg,
gpointer user_data);
-struct _SoupSession {
- GObject parent;
-
-};
-
-typedef struct {
- GObjectClass parent_class;
-
- /* signals */
- void (*request_started) (SoupSession *session, SoupMessage *msg,
- SoupSocket *socket);
- void (*authenticate) (SoupSession *session, SoupMessage *msg,
- SoupAuth *auth, gboolean retrying);
-
- /* methods */
- void (*auth_required) (SoupSession *session, SoupMessage *msg,
- SoupAuth *auth, gboolean retrying);
-
- /* Padding for future expansion */
- void (*_libsoup_reserved4) (void);
-} SoupSessionClass;
-
-SOUP_AVAILABLE_IN_2_42
-GType soup_session_get_type (void);
-
#define SOUP_SESSION_LOCAL_ADDRESS "local-address"
#define SOUP_SESSION_PROXY_RESOLVER "proxy-resolver"
#define SOUP_SESSION_MAX_CONNS "max-conns"
@@ -200,5 +171,3 @@ SoupWebsocketConnection *soup_session_websocket_connect_finish (SoupSession
GError **error);
G_END_DECLS
-
-#endif /* __SOUP_SESSION_H__ */
diff --git a/libsoup/soup-status.h b/libsoup/soup-status.h
index 625fe669..040a858c 100644
--- a/libsoup/soup-status.h
+++ b/libsoup/soup-status.h
@@ -5,8 +5,7 @@
* Copyright (C) 2001-2003, Ximian, Inc.
*/
-#ifndef __SOUP_STATUS_H__
-#define __SOUP_STATUS_H__ 1
+#pragma once
#include "soup-version.h"
@@ -110,5 +109,3 @@ SOUP_AVAILABLE_IN_2_4
GQuark soup_http_error_quark (void);
G_END_DECLS
-
-#endif /* __SOUP_STATUS_H__ */
diff --git a/libsoup/soup-tld.h b/libsoup/soup-tld.h
index cc71933c..f563fac7 100644
--- a/libsoup/soup-tld.h
+++ b/libsoup/soup-tld.h
@@ -3,8 +3,7 @@
* Copyright (C) 2012 Igalia S.L.
*/
-#ifndef __SOUP_TLD_H__
-#define __SOUP_TLD_H__
+#pragma once
#include "soup-types.h"
@@ -31,5 +30,3 @@ typedef enum {
} SoupTLDError;
G_END_DECLS
-
-#endif /* __SOUP_TLD_H__ */
diff --git a/libsoup/soup-uri.h b/libsoup/soup-uri.h
index f60f7560..6e949ea1 100644
--- a/libsoup/soup-uri.h
+++ b/libsoup/soup-uri.h
@@ -5,8 +5,7 @@
*/
-#ifndef __SOUP_URI_H__
-#define __SOUP_URI_H__ 1
+#pragma once
#include "soup-types.h"
@@ -136,6 +135,6 @@ gboolean soup_uri_host_equal (gconstpointer v1,
#define SOUP_URI_IS_VALID(uri) ((uri) && (uri)->scheme && (uri)->path)
#define SOUP_URI_VALID_FOR_HTTP(uri) ((uri) && ((uri)->scheme == SOUP_URI_SCHEME_HTTP || (uri)->scheme == SOUP_URI_SCHEME_HTTPS) && (uri)->host && (uri)->path)
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC(SoupURI, soup_uri_free)
-#endif /* __SOUP_URI_H__ */
+G_END_DECLS
diff --git a/libsoup/soup-version.h.in b/libsoup/soup-version.h.in
index 07bed7fd..53605dfa 100644
--- a/libsoup/soup-version.h.in
+++ b/libsoup/soup-version.h.in
@@ -5,8 +5,7 @@
* Copyright (C) 2012 Igalia S.L.
*/
-#ifndef __SOUP_VERSION_H__
-#define __SOUP_VERSION_H__
+#pragma once
#include <glib.h>
@@ -433,5 +432,3 @@ gboolean soup_check_version (guint major,
guint micro);
G_END_DECLS
-
-#endif /* __SOUP_VERSION_H__ */
diff --git a/libsoup/soup.h b/libsoup/soup.h
index f023565c..254ce582 100644
--- a/libsoup/soup.h
+++ b/libsoup/soup.h
@@ -13,10 +13,14 @@ extern "C" {
#define __SOUP_H_INSIDE__
#include "auth/soup-auth.h"
+#include "auth/soup-auth-basic.h"
+#include "auth/soup-auth-digest.h"
#include "auth/soup-auth-domain.h"
#include "auth/soup-auth-domain-basic.h"
#include "auth/soup-auth-domain-digest.h"
#include "auth/soup-auth-manager.h"
+#include "auth/soup-auth-negotiate.h"
+#include "auth/soup-auth-ntlm.h"
#include "cache/soup-cache.h"
#include "content-sniffer/soup-content-decoder.h"
#include "content-sniffer/soup-content-sniffer.h"
@@ -55,8 +59,6 @@ extern "C" {
#include "websocket/soup-websocket-extension-manager.h"
#include "xmlrpc/soup-xmlrpc.h"
-#include "soup-autocleanups.h"
-
#undef __SOUP_H_INSIDE__
#ifdef __cplusplus
diff --git a/libsoup/websocket/soup-websocket-connection.c b/libsoup/websocket/soup-websocket-connection.c
index a4095e1c..a6c34f40 100644
--- a/libsoup/websocket/soup-websocket-connection.c
+++ b/libsoup/websocket/soup-websocket-connection.c
@@ -113,7 +113,7 @@ typedef struct {
gboolean pending;
} Frame;
-struct _SoupWebsocketConnectionPrivate {
+typedef struct {
GIOStream *io_stream;
SoupWebsocketConnectionType connection_type;
SoupURI *uri;
@@ -149,7 +149,7 @@ struct _SoupWebsocketConnectionPrivate {
GSource *keepalive_timeout;
GList *extensions;
-};
+} SoupWebsocketConnectionPrivate;
#define MAX_INCOMING_PAYLOAD_SIZE_DEFAULT 128 * 1024
#define READ_BUFFER_SIZE 1024
@@ -260,13 +260,11 @@ frame_free (gpointer data)
static void
soup_websocket_connection_init (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- pv = self->pv = soup_websocket_connection_get_instance_private (self);
-
- pv->incoming = g_byte_array_sized_new (1024);
- g_queue_init (&pv->outgoing);
- pv->main_context = g_main_context_ref_thread_default ();
+ priv->incoming = g_byte_array_sized_new (1024);
+ g_queue_init (&priv->outgoing);
+ priv->main_context = g_main_context_ref_thread_default ();
}
static void
@@ -275,18 +273,18 @@ on_iostream_closed (GObject *source,
gpointer user_data)
{
SoupWebsocketConnection *self = user_data;
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GError *error = NULL;
/* We treat connection as closed even if close fails */
- pv->io_closed = TRUE;
- g_io_stream_close_finish (pv->io_stream, result, &error);
+ priv->io_closed = TRUE;
+ g_io_stream_close_finish (priv->io_stream, result, &error);
if (error) {
g_debug ("error closing web socket stream: %s", error->message);
- if (!pv->dirty_close)
+ if (!priv->dirty_close)
g_signal_emit (self, signals[ERROR], 0, error);
- pv->dirty_close = TRUE;
+ priv->dirty_close = TRUE;
g_error_free (error);
}
@@ -300,93 +298,93 @@ on_iostream_closed (GObject *source,
static void
soup_websocket_connection_start_input_source (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->input_source)
+ if (priv->input_source)
return;
- pv->input_source = g_pollable_input_stream_create_source (pv->input, NULL);
- g_source_set_callback (pv->input_source, (GSourceFunc)on_web_socket_input, self, NULL);
- g_source_attach (pv->input_source, pv->main_context);
+ priv->input_source = g_pollable_input_stream_create_source (priv->input, NULL);
+ g_source_set_callback (priv->input_source, (GSourceFunc)on_web_socket_input, self, NULL);
+ g_source_attach (priv->input_source, priv->main_context);
}
static void
soup_websocket_connection_stop_input_source (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->input_source) {
+ if (priv->input_source) {
g_debug ("stopping input source");
- g_source_destroy (pv->input_source);
- g_source_unref (pv->input_source);
- pv->input_source = NULL;
+ g_source_destroy (priv->input_source);
+ g_source_unref (priv->input_source);
+ priv->input_source = NULL;
}
}
static void
soup_websocket_connection_start_output_source (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->output_source)
+ if (priv->output_source)
return;
- pv->output_source = g_pollable_output_stream_create_source (pv->output, NULL);
- g_source_set_callback (pv->output_source, (GSourceFunc)on_web_socket_output, self, NULL);
- g_source_attach (pv->output_source, pv->main_context);
+ priv->output_source = g_pollable_output_stream_create_source (priv->output, NULL);
+ g_source_set_callback (priv->output_source, (GSourceFunc)on_web_socket_output, self, NULL);
+ g_source_attach (priv->output_source, priv->main_context);
}
static void
soup_websocket_connection_stop_output_source (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->output_source) {
+ if (priv->output_source) {
g_debug ("stopping output source");
- g_source_destroy (pv->output_source);
- g_source_unref (pv->output_source);
- pv->output_source = NULL;
+ g_source_destroy (priv->output_source);
+ g_source_unref (priv->output_source);
+ priv->output_source = NULL;
}
}
static void
keepalive_stop_timeout (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->keepalive_timeout) {
- g_source_destroy (pv->keepalive_timeout);
- g_source_unref (pv->keepalive_timeout);
- pv->keepalive_timeout = NULL;
+ if (priv->keepalive_timeout) {
+ g_source_destroy (priv->keepalive_timeout);
+ g_source_unref (priv->keepalive_timeout);
+ priv->keepalive_timeout = NULL;
}
}
static void
close_io_stop_timeout (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->close_timeout) {
- g_source_destroy (pv->close_timeout);
- g_source_unref (pv->close_timeout);
- pv->close_timeout = NULL;
+ if (priv->close_timeout) {
+ g_source_destroy (priv->close_timeout);
+ g_source_unref (priv->close_timeout);
+ priv->close_timeout = NULL;
}
}
static void
close_io_stream (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
keepalive_stop_timeout (self);
close_io_stop_timeout (self);
- if (!pv->io_closing) {
+ if (!priv->io_closing) {
soup_websocket_connection_stop_input_source (self);
soup_websocket_connection_stop_output_source (self);
- pv->io_closing = TRUE;
+ priv->io_closing = TRUE;
g_debug ("closing io stream");
- g_io_stream_close_async (pv->io_stream, G_PRIORITY_DEFAULT,
+ g_io_stream_close_async (priv->io_stream, G_PRIORITY_DEFAULT,
NULL, on_iostream_closed, g_object_ref (self));
}
@@ -396,16 +394,16 @@ close_io_stream (SoupWebsocketConnection *self)
static void
shutdown_wr_io_stream (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GSocket *socket;
GIOStream *base_iostream;
GError *error = NULL;
soup_websocket_connection_stop_output_source (self);
- base_iostream = SOUP_IS_IO_STREAM (pv->io_stream) ?
- soup_io_stream_get_base_iostream (SOUP_IO_STREAM (pv->io_stream)) :
- pv->io_stream;
+ base_iostream = SOUP_IS_IO_STREAM (priv->io_stream) ?
+ soup_io_stream_get_base_iostream (SOUP_IO_STREAM (priv->io_stream)) :
+ priv->io_stream;
if (G_IS_SOCKET_CONNECTION (base_iostream)) {
socket = g_socket_connection_get_socket (G_SOCKET_CONNECTION (base_iostream));
@@ -423,9 +421,9 @@ static gboolean
on_timeout_close_io (gpointer user_data)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (user_data);
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- pv->close_timeout = 0;
+ priv->close_timeout = 0;
g_debug ("peer did not close io when expected");
close_io_stream (self);
@@ -436,16 +434,16 @@ on_timeout_close_io (gpointer user_data)
static void
close_io_after_timeout (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
const int timeout = 5;
- if (pv->close_timeout)
+ if (priv->close_timeout)
return;
g_debug ("waiting %d seconds for peer to close io", timeout);
- pv->close_timeout = g_timeout_source_new_seconds (timeout);
- g_source_set_callback (pv->close_timeout, on_timeout_close_io, self, NULL);
- g_source_attach (pv->close_timeout, pv->main_context);
+ priv->close_timeout = g_timeout_source_new_seconds (timeout);
+ g_source_set_callback (priv->close_timeout, on_timeout_close_io, self, NULL);
+ g_source_attach (priv->close_timeout, priv->main_context);
}
static void
@@ -467,6 +465,7 @@ send_message (SoupWebsocketConnection *self,
const guint8 *data,
gsize length)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
gsize buffered_amount;
GByteArray *bytes;
gsize frame_len;
@@ -486,7 +485,7 @@ send_message (SoupWebsocketConnection *self,
outer[0] = 0x80 | opcode;
filtered_bytes = g_bytes_new_static (data, length);
- for (l = self->pv->extensions; l != NULL; l = g_list_next (l)) {
+ for (l = priv->extensions; l != NULL; l = g_list_next (l)) {
SoupWebsocketExtension *extension;
extension = (SoupWebsocketExtension *)l->data;
@@ -542,7 +541,7 @@ send_message (SoupWebsocketConnection *self,
/* The server side doesn't need to mask, so we don't. There's
* probably a client somewhere that's not expecting it.
*/
- if (self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT) {
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT) {
guint32 rnd = g_random_int ();
outer[1] |= 0x80;
mask_offset = bytes->len;
@@ -552,7 +551,7 @@ send_message (SoupWebsocketConnection *self,
g_byte_array_append (bytes, data, length);
- if (self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT)
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT)
xor_with_mask (bytes->data + mask_offset, bytes->data + mask_offset + MASK_LENGTH, length);
frame_len = bytes->len;
@@ -568,6 +567,7 @@ send_close (SoupWebsocketConnection *self,
gushort code,
const char *reason)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
/* Note that send_message truncates as expected */
char buffer[128];
gsize len = 0;
@@ -580,7 +580,7 @@ send_close (SoupWebsocketConnection *self,
}
send_message (self, flags, 0x08, (guint8 *)buffer, len);
- self->pv->close_sent = TRUE;
+ priv->close_sent = TRUE;
keepalive_stop_timeout (self);
}
@@ -590,6 +590,7 @@ emit_error_and_close (SoupWebsocketConnection *self,
GError *error,
gboolean prejudice)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
gboolean ignore = FALSE;
gushort code;
@@ -603,7 +604,7 @@ emit_error_and_close (SoupWebsocketConnection *self,
else
code = SOUP_WEBSOCKET_CLOSE_GOING_AWAY;
- self->pv->dirty_close = TRUE;
+ priv->dirty_close = TRUE;
g_signal_emit (self, signals[ERROR], 0, error);
g_error_free (error);
@@ -634,11 +635,12 @@ static void
protocol_error_and_close_full (SoupWebsocketConnection *self,
gboolean prejudice)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GError *error;
error = g_error_new_literal (SOUP_WEBSOCKET_ERROR,
SOUP_WEBSOCKET_CLOSE_PROTOCOL_ERROR,
- self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
+ priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
"Received invalid WebSocket response from the client" :
"Received invalid WebSocket response from the server");
emit_error_and_close (self, error, prejudice);
@@ -653,11 +655,12 @@ protocol_error_and_close (SoupWebsocketConnection *self)
static void
bad_data_error_and_close (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GError *error;
error = g_error_new_literal (SOUP_WEBSOCKET_ERROR,
SOUP_WEBSOCKET_CLOSE_BAD_DATA,
- self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
+ priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
"Received invalid WebSocket data from the client" :
"Received invalid WebSocket data from the server");
emit_error_and_close (self, error, FALSE);
@@ -667,16 +670,17 @@ static void
too_big_error_and_close (SoupWebsocketConnection *self,
guint64 payload_len)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GError *error;
error = g_error_new_literal (SOUP_WEBSOCKET_ERROR,
SOUP_WEBSOCKET_CLOSE_TOO_BIG,
- self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
+ priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ?
"Received extremely large WebSocket data from the client" :
"Received extremely large WebSocket data from the server");
g_debug ("%s is trying to frame of size %" G_GUINT64_FORMAT " or greater, but max supported size is %" G_GUINT64_FORMAT,
- self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ? "server" : "client",
- payload_len, self->pv->max_incoming_payload_size);
+ priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER ? "server" : "client",
+ payload_len, priv->max_incoming_payload_size);
emit_error_and_close (self, error, TRUE);
}
@@ -686,11 +690,9 @@ close_connection (SoupWebsocketConnection *self,
const char *data)
{
SoupWebsocketQueueFlags flags;
- SoupWebsocketConnectionPrivate *pv;
-
- pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- if (pv->close_sent) {
+ if (priv->close_sent) {
g_debug ("close code already sent");
return;
}
@@ -706,13 +708,13 @@ close_connection (SoupWebsocketConnection *self,
case SOUP_WEBSOCKET_CLOSE_TOO_BIG:
break;
case SOUP_WEBSOCKET_CLOSE_NO_EXTENSION:
- if (pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER) {
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER) {
g_debug ("Wrong closing code %d received for a server connection",
code);
}
break;
case SOUP_WEBSOCKET_CLOSE_SERVER_ERROR:
- if (pv->connection_type != SOUP_WEBSOCKET_CONNECTION_SERVER) {
+ if (priv->connection_type != SOUP_WEBSOCKET_CONNECTION_SERVER) {
g_debug ("Wrong closing code %d received for a non server connection",
code);
}
@@ -731,11 +733,11 @@ close_connection (SoupWebsocketConnection *self,
g_signal_emit (self, signals[CLOSING], 0);
- if (pv->close_received)
+ if (priv->close_received)
g_debug ("responding to close request");
flags = 0;
- if (pv->close_received)
+ if (priv->close_received)
flags |= SOUP_WEBSOCKET_QUEUE_LAST;
send_close (self, flags, code, data);
close_io_after_timeout (self);
@@ -746,17 +748,17 @@ receive_close (SoupWebsocketConnection *self,
const guint8 *data,
gsize len)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- pv->peer_close_code = 0;
- g_free (pv->peer_close_data);
- pv->peer_close_data = NULL;
- pv->close_received = TRUE;
+ priv->peer_close_code = 0;
+ g_free (priv->peer_close_data);
+ priv->peer_close_data = NULL;
+ priv->close_received = TRUE;
switch (len) {
case 0:
/* Send a clean close when having an empty payload */
- pv->peer_close_code = SOUP_WEBSOCKET_CLOSE_NO_STATUS;
+ priv->peer_close_code = SOUP_WEBSOCKET_CLOSE_NO_STATUS;
close_connection (self, 1000, NULL);
return;
case 1:
@@ -765,7 +767,7 @@ receive_close (SoupWebsocketConnection *self,
return;
default:
/* Store the code/data payload */
- pv->peer_close_code = (guint16)data[0] << 8 | data[1];
+ priv->peer_close_code = (guint16)data[0] << 8 | data[1];
break;
}
@@ -779,16 +781,16 @@ receive_close (SoupWebsocketConnection *self,
return;
}
- pv->peer_close_data = g_strndup ((char *)data, len);
+ priv->peer_close_data = g_strndup ((char *)data, len);
}
/* Once we receive close response on server, close immediately */
- if (pv->close_sent) {
+ if (priv->close_sent) {
shutdown_wr_io_stream (self);
- if (pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER)
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER)
close_io_stream (self);
} else {
- close_connection (self, pv->peer_close_code, pv->peer_close_data);
+ close_connection (self, priv->peer_close_code, priv->peer_close_data);
}
}
@@ -830,14 +832,14 @@ process_contents (SoupWebsocketConnection *self,
guint8 opcode,
GBytes *payload_data)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GBytes *message;
gconstpointer payload;
gsize payload_len;
payload = g_bytes_get_data (payload_data, &payload_len);
- if (pv->close_sent && pv->close_received)
+ if (priv->close_sent && priv->close_received)
return;
if (control) {
@@ -865,14 +867,14 @@ process_contents (SoupWebsocketConnection *self,
protocol_error_and_close (self);
return;
}
- } else if (pv->close_received) {
+ } else if (priv->close_received) {
g_debug ("received message after close was received");
} else {
/* A message frame */
if (!fin && opcode) {
/* Initial fragment of a message */
- if (pv->message_data) {
+ if (priv->message_data) {
g_debug ("received out of order initial message fragment");
protocol_error_and_close (self);
return;
@@ -880,7 +882,7 @@ process_contents (SoupWebsocketConnection *self,
g_debug ("received initial fragment frame %d with %d payload", (int)opcode, (int)payload_len);
} else if (!fin && !opcode) {
/* Middle fragment of a message */
- if (!pv->message_data) {
+ if (!priv->message_data) {
g_debug ("received out of order middle message fragment");
protocol_error_and_close (self);
return;
@@ -888,7 +890,7 @@ process_contents (SoupWebsocketConnection *self,
g_debug ("received middle fragment frame with %d payload", (int)payload_len);
} else if (fin && !opcode) {
/* Last fragment of a message */
- if (!pv->message_data) {
+ if (!priv->message_data) {
g_debug ("received out of order ending message fragment");
protocol_error_and_close (self);
return;
@@ -897,7 +899,7 @@ process_contents (SoupWebsocketConnection *self,
} else {
/* An unfragmented message */
g_assert (opcode != 0);
- if (pv->message_data) {
+ if (priv->message_data) {
g_debug ("received unfragmented message when fragment was expected");
protocol_error_and_close (self);
return;
@@ -906,14 +908,14 @@ process_contents (SoupWebsocketConnection *self,
}
if (opcode) {
- pv->message_opcode = opcode;
- pv->message_data = g_byte_array_sized_new (payload_len + 1);
+ priv->message_opcode = opcode;
+ priv->message_data = g_byte_array_sized_new (payload_len + 1);
}
- switch (pv->message_opcode) {
+ switch (priv->message_opcode) {
case 0x01:
case 0x02:
- g_byte_array_append (pv->message_data, payload, payload_len);
+ g_byte_array_append (priv->message_data, payload, payload_len);
break;
default:
g_debug ("received unknown data frame: %d", (int)opcode);
@@ -923,31 +925,31 @@ process_contents (SoupWebsocketConnection *self,
/* Actually deliver the message? */
if (fin) {
- if (pv->message_opcode == 0x01 &&
- !utf8_validate((const char *)pv->message_data->data,
- pv->message_data->len)) {
+ if (priv->message_opcode == 0x01 &&
+ !utf8_validate((const char *)priv->message_data->data,
+ priv->message_data->len)) {
g_debug ("received invalid non-UTF8 text data");
/* Discard the entire message */
- g_byte_array_unref (pv->message_data);
- pv->message_data = NULL;
- pv->message_opcode = 0;
+ g_byte_array_unref (priv->message_data);
+ priv->message_data = NULL;
+ priv->message_opcode = 0;
bad_data_error_and_close (self);
return;
}
/* Always null terminate, as a convenience */
- g_byte_array_append (pv->message_data, (guchar *)"\0", 1);
+ g_byte_array_append (priv->message_data, (guchar *)"\0", 1);
/* But don't include the null terminator in the byte count */
- pv->message_data->len--;
+ priv->message_data->len--;
- opcode = pv->message_opcode;
- message = g_byte_array_free_to_bytes (pv->message_data);
- pv->message_data = NULL;
- pv->message_opcode = 0;
+ opcode = priv->message_opcode;
+ message = g_byte_array_free_to_bytes (priv->message_data);
+ priv->message_data = NULL;
+ priv->message_opcode = 0;
g_debug ("message: delivering %d with %d length",
(int)opcode, (int)g_bytes_get_size (message));
g_signal_emit (self, signals[MESSAGE], 0, (int)opcode, message);
@@ -959,6 +961,7 @@ process_contents (SoupWebsocketConnection *self,
static gboolean
process_frame (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
guint8 *header;
guint8 *payload;
guint64 payload_len;
@@ -973,17 +976,17 @@ process_frame (SoupWebsocketConnection *self)
GList *l;
GError *error = NULL;
- len = self->pv->incoming->len;
+ len = priv->incoming->len;
if (len < 2)
return FALSE; /* need more data */
- header = self->pv->incoming->data;
+ header = priv->incoming->data;
fin = ((header[0] & 0x80) != 0);
control = header[0] & 0x08;
opcode = header[0] & 0x0f;
masked = ((header[1] & 0x80) != 0);
- if (self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT && masked) {
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_CLIENT && masked) {
/* A server MUST NOT mask any frames that it sends to the client.
* A client MUST close a connection if it detects a masked frame.
*/
@@ -992,7 +995,7 @@ process_frame (SoupWebsocketConnection *self)
return FALSE;
}
- if (self->pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER && !masked) {
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER && !masked) {
/* The server MUST close the connection upon receiving a frame
* that is not masked.
*/
@@ -1048,8 +1051,8 @@ process_frame (SoupWebsocketConnection *self)
}
/* Safety valve */
- if (self->pv->max_incoming_payload_size > 0 &&
- payload_len >= self->pv->max_incoming_payload_size) {
+ if (priv->max_incoming_payload_size > 0 &&
+ payload_len >= priv->max_incoming_payload_size) {
too_big_error_and_close (self, payload_len);
return FALSE;
}
@@ -1071,11 +1074,11 @@ process_frame (SoupWebsocketConnection *self)
}
filtered_bytes = g_bytes_new_static (payload, payload_len);
- for (l = self->pv->extensions; l != NULL; l = g_list_next (l)) {
+ for (l = priv->extensions; l != NULL; l = g_list_next (l)) {
SoupWebsocketExtension *extension;
extension = (SoupWebsocketExtension *)l->data;
- filtered_bytes = soup_websocket_extension_process_incoming_message (extension, self->pv->incoming->data, filtered_bytes, &error);
+ filtered_bytes = soup_websocket_extension_process_incoming_message (extension, priv->incoming->data, filtered_bytes, &error);
if (error) {
emit_error_and_close (self, error, FALSE);
return FALSE;
@@ -1097,7 +1100,7 @@ process_frame (SoupWebsocketConnection *self)
g_bytes_unref (filtered_bytes);
/* Move past the parsed frame */
- g_byte_array_remove_range (self->pv->incoming, 0, at + payload_len);
+ g_byte_array_remove_range (priv->incoming, 0, at + payload_len);
return TRUE;
}
@@ -1112,7 +1115,7 @@ process_incoming (SoupWebsocketConnection *self)
static void
soup_websocket_connection_read (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GError *error = NULL;
gboolean end = FALSE;
gssize count;
@@ -1121,11 +1124,11 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
soup_websocket_connection_stop_input_source (self);
do {
- len = pv->incoming->len;
- g_byte_array_set_size (pv->incoming, len + READ_BUFFER_SIZE);
+ len = priv->incoming->len;
+ g_byte_array_set_size (priv->incoming, len + READ_BUFFER_SIZE);
- count = g_pollable_input_stream_read_nonblocking (pv->input,
- pv->incoming->data + len,
+ count = g_pollable_input_stream_read_nonblocking (priv->input,
+ priv->incoming->data + len,
READ_BUFFER_SIZE, NULL, &error);
if (count < 0) {
if (g_error_matches (error, G_IO_ERROR, G_IO_ERROR_WOULD_BLOCK)) {
@@ -1139,14 +1142,14 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
end = TRUE;
}
- pv->incoming->len = len + count;
+ priv->incoming->len = len + count;
} while (count > 0);
process_incoming (self);
if (end) {
- if (!pv->close_sent || !pv->close_received) {
- pv->dirty_close = TRUE;
+ if (!priv->close_sent || !priv->close_received) {
+ priv->dirty_close = TRUE;
g_debug ("connection unexpectedly closed by peer");
} else {
g_debug ("peer has closed socket");
@@ -1156,7 +1159,7 @@ soup_websocket_connection_read (SoupWebsocketConnection *self)
return;
}
- if (!pv->io_closing)
+ if (!priv->io_closing)
soup_websocket_connection_start_input_source (self);
}
@@ -1172,7 +1175,7 @@ on_web_socket_input (GObject *pollable_stream,
static void
soup_websocket_connection_write (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
const guint8 *data;
GError *error = NULL;
Frame *frame;
@@ -1186,7 +1189,7 @@ soup_websocket_connection_write (SoupWebsocketConnection *self)
return;
}
- frame = g_queue_peek_head (&pv->outgoing);
+ frame = g_queue_peek_head (&priv->outgoing);
/* No more frames to send */
if (frame == NULL)
@@ -1196,7 +1199,7 @@ soup_websocket_connection_write (SoupWebsocketConnection *self)
g_assert (len > 0);
g_assert (len > frame->sent);
- count = g_pollable_output_stream_write_nonblocking (pv->output,
+ count = g_pollable_output_stream_write_nonblocking (priv->output,
data + frame->sent,
len - frame->sent,
NULL, &error);
@@ -1217,10 +1220,10 @@ soup_websocket_connection_write (SoupWebsocketConnection *self)
frame->sent += count;
if (frame->sent >= len) {
g_debug ("sent frame");
- g_queue_pop_head (&pv->outgoing);
+ g_queue_pop_head (&priv->outgoing);
if (frame->flags & SOUP_WEBSOCKET_QUEUE_LAST) {
- if (pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER) {
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER) {
close_io_stream (self);
} else {
shutdown_wr_io_stream (self);
@@ -1229,7 +1232,7 @@ soup_websocket_connection_write (SoupWebsocketConnection *self)
}
frame_free (frame);
- if (g_queue_is_empty (&pv->outgoing))
+ if (g_queue_is_empty (&priv->outgoing))
return;
}
@@ -1252,11 +1255,11 @@ queue_frame (SoupWebsocketConnection *self,
gsize len,
gsize amount)
{
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
Frame *frame;
g_return_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self));
- g_return_if_fail (pv->close_sent == FALSE);
+ g_return_if_fail (priv->close_sent == FALSE);
g_return_if_fail (data != NULL);
g_return_if_fail (len > 0);
@@ -1270,7 +1273,7 @@ queue_frame (SoupWebsocketConnection *self,
GList *l;
/* Find out the first frame that is not urgent or partially sent or pending */
- for (l = g_queue_peek_head_link (&pv->outgoing); l != NULL; l = l->next) {
+ for (l = g_queue_peek_head_link (&priv->outgoing); l != NULL; l = l->next) {
Frame *prev = l->data;
if (!(prev->flags & SOUP_WEBSOCKET_QUEUE_URGENT) &&
@@ -1278,9 +1281,9 @@ queue_frame (SoupWebsocketConnection *self,
break;
}
- g_queue_insert_before (&pv->outgoing, l, frame);
+ g_queue_insert_before (&priv->outgoing, l, frame);
} else {
- g_queue_push_tail (&pv->outgoing, frame);
+ g_queue_push_tail (&priv->outgoing, frame);
}
soup_websocket_connection_write (self);
@@ -1290,23 +1293,23 @@ static void
soup_websocket_connection_constructed (GObject *object)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (object);
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
GInputStream *is;
GOutputStream *os;
G_OBJECT_CLASS (soup_websocket_connection_parent_class)->constructed (object);
- g_return_if_fail (pv->io_stream != NULL);
+ g_return_if_fail (priv->io_stream != NULL);
- is = g_io_stream_get_input_stream (pv->io_stream);
+ is = g_io_stream_get_input_stream (priv->io_stream);
g_return_if_fail (G_IS_POLLABLE_INPUT_STREAM (is));
- pv->input = G_POLLABLE_INPUT_STREAM (is);
- g_return_if_fail (g_pollable_input_stream_can_poll (pv->input));
+ priv->input = G_POLLABLE_INPUT_STREAM (is);
+ g_return_if_fail (g_pollable_input_stream_can_poll (priv->input));
- os = g_io_stream_get_output_stream (pv->io_stream);
+ os = g_io_stream_get_output_stream (priv->io_stream);
g_return_if_fail (G_IS_POLLABLE_OUTPUT_STREAM (os));
- pv->output = G_POLLABLE_OUTPUT_STREAM (os);
- g_return_if_fail (g_pollable_output_stream_can_poll (pv->output));
+ priv->output = G_POLLABLE_OUTPUT_STREAM (os);
+ g_return_if_fail (g_pollable_output_stream_can_poll (priv->output));
soup_websocket_connection_start_input_source (self);
}
@@ -1318,7 +1321,7 @@ soup_websocket_connection_get_property (GObject *object,
GParamSpec *pspec)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (object);
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
switch (prop_id) {
case PROP_IO_STREAM:
@@ -1346,15 +1349,15 @@ soup_websocket_connection_get_property (GObject *object,
break;
case PROP_MAX_INCOMING_PAYLOAD_SIZE:
- g_value_set_uint64 (value, pv->max_incoming_payload_size);
+ g_value_set_uint64 (value, priv->max_incoming_payload_size);
break;
case PROP_KEEPALIVE_INTERVAL:
- g_value_set_uint (value, pv->keepalive_interval);
+ g_value_set_uint (value, priv->keepalive_interval);
break;
case PROP_EXTENSIONS:
- g_value_set_pointer (value, pv->extensions);
+ g_value_set_pointer (value, priv->extensions);
break;
default:
@@ -1370,35 +1373,35 @@ soup_websocket_connection_set_property (GObject *object,
GParamSpec *pspec)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (object);
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
switch (prop_id) {
case PROP_IO_STREAM:
- g_return_if_fail (pv->io_stream == NULL);
- pv->io_stream = g_value_dup_object (value);
+ g_return_if_fail (priv->io_stream == NULL);
+ priv->io_stream = g_value_dup_object (value);
break;
case PROP_CONNECTION_TYPE:
- pv->connection_type = g_value_get_enum (value);
+ priv->connection_type = g_value_get_enum (value);
break;
case PROP_URI:
- g_return_if_fail (pv->uri == NULL);
- pv->uri = g_value_dup_boxed (value);
+ g_return_if_fail (priv->uri == NULL);
+ priv->uri = g_value_dup_boxed (value);
break;
case PROP_ORIGIN:
- g_return_if_fail (pv->origin == NULL);
- pv->origin = g_value_dup_string (value);
+ g_return_if_fail (priv->origin == NULL);
+ priv->origin = g_value_dup_string (value);
break;
case PROP_PROTOCOL:
- g_return_if_fail (pv->protocol == NULL);
- pv->protocol = g_value_dup_string (value);
+ g_return_if_fail (priv->protocol == NULL);
+ priv->protocol = g_value_dup_string (value);
break;
case PROP_MAX_INCOMING_PAYLOAD_SIZE:
- pv->max_incoming_payload_size = g_value_get_uint64 (value);
+ priv->max_incoming_payload_size = g_value_get_uint64 (value);
break;
case PROP_KEEPALIVE_INTERVAL:
@@ -1407,7 +1410,7 @@ soup_websocket_connection_set_property (GObject *object,
break;
case PROP_EXTENSIONS:
- pv->extensions = g_value_get_pointer (value);
+ priv->extensions = g_value_get_pointer (value);
break;
default:
@@ -1420,8 +1423,9 @@ static void
soup_websocket_connection_dispose (GObject *object)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (object);
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- self->pv->dirty_close = TRUE;
+ priv->dirty_close = TRUE;
close_io_stream (self);
G_OBJECT_CLASS (soup_websocket_connection_parent_class)->dispose (object);
@@ -1431,34 +1435,34 @@ static void
soup_websocket_connection_finalize (GObject *object)
{
SoupWebsocketConnection *self = SOUP_WEBSOCKET_CONNECTION (object);
- SoupWebsocketConnectionPrivate *pv = self->pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
- g_free (pv->peer_close_data);
+ g_free (priv->peer_close_data);
- g_main_context_unref (pv->main_context);
+ g_main_context_unref (priv->main_context);
- if (pv->incoming)
- g_byte_array_free (pv->incoming, TRUE);
- while (!g_queue_is_empty (&pv->outgoing))
- frame_free (g_queue_pop_head (&pv->outgoing));
+ if (priv->incoming)
+ g_byte_array_free (priv->incoming, TRUE);
+ while (!g_queue_is_empty (&priv->outgoing))
+ frame_free (g_queue_pop_head (&priv->outgoing));
- g_clear_object (&pv->io_stream);
- g_assert (!pv->input_source);
- g_assert (!pv->output_source);
- g_assert (pv->io_closing);
- g_assert (pv->io_closed);
- g_assert (!pv->close_timeout);
- g_assert (!pv->keepalive_timeout);
+ g_clear_object (&priv->io_stream);
+ g_assert (!priv->input_source);
+ g_assert (!priv->output_source);
+ g_assert (priv->io_closing);
+ g_assert (priv->io_closed);
+ g_assert (!priv->close_timeout);
+ g_assert (!priv->keepalive_timeout);
- if (pv->message_data)
- g_byte_array_free (pv->message_data, TRUE);
+ if (priv->message_data)
+ g_byte_array_free (priv->message_data, TRUE);
- if (pv->uri)
- soup_uri_free (pv->uri);
- g_free (pv->origin);
- g_free (pv->protocol);
+ if (priv->uri)
+ soup_uri_free (priv->uri);
+ g_free (priv->origin);
+ g_free (priv->protocol);
- g_list_free_full (pv->extensions, g_object_unref);
+ g_list_free_full (priv->extensions, g_object_unref);
G_OBJECT_CLASS (soup_websocket_connection_parent_class)->finalize (object);
}
@@ -1806,9 +1810,11 @@ soup_websocket_connection_new_with_extensions (GIOStream *str
GIOStream *
soup_websocket_connection_get_io_stream (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->io_stream;
+ return priv->io_stream;
}
/**
@@ -1824,9 +1830,11 @@ soup_websocket_connection_get_io_stream (SoupWebsocketConnection *self)
SoupWebsocketConnectionType
soup_websocket_connection_get_connection_type (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), SOUP_WEBSOCKET_CONNECTION_UNKNOWN);
- return self->pv->connection_type;
+ return priv->connection_type;
}
/**
@@ -1845,9 +1853,11 @@ soup_websocket_connection_get_connection_type (SoupWebsocketConnection *self)
SoupURI *
soup_websocket_connection_get_uri (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->uri;
+ return priv->uri;
}
/**
@@ -1863,9 +1873,11 @@ soup_websocket_connection_get_uri (SoupWebsocketConnection *self)
const char *
soup_websocket_connection_get_origin (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->origin;
+ return priv->origin;
}
/**
@@ -1881,9 +1893,11 @@ soup_websocket_connection_get_origin (SoupWebsocketConnection *self)
const char *
soup_websocket_connection_get_protocol (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->protocol;
+ return priv->protocol;
}
/**
@@ -1899,9 +1913,11 @@ soup_websocket_connection_get_protocol (SoupWebsocketConnection *self)
GList *
soup_websocket_connection_get_extensions (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->extensions;
+ return priv->extensions;
}
/**
@@ -1917,11 +1933,13 @@ soup_websocket_connection_get_extensions (SoupWebsocketConnection *self)
SoupWebsocketState
soup_websocket_connection_get_state (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), 0);
- if (self->pv->io_closed)
+ if (priv->io_closed)
return SOUP_WEBSOCKET_STATE_CLOSED;
- else if (self->pv->io_closing || self->pv->close_sent)
+ else if (priv->io_closing || priv->close_sent)
return SOUP_WEBSOCKET_STATE_CLOSING;
else
return SOUP_WEBSOCKET_STATE_OPEN;
@@ -1945,9 +1963,11 @@ soup_websocket_connection_get_state (SoupWebsocketConnection *self)
gushort
soup_websocket_connection_get_close_code (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), 0);
- return self->pv->peer_close_code;
+ return priv->peer_close_code;
}
/**
@@ -1967,9 +1987,11 @@ soup_websocket_connection_get_close_code (SoupWebsocketConnection *self)
const char *
soup_websocket_connection_get_close_data (SoupWebsocketConnection *self)
{
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
+
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), NULL);
- return self->pv->peer_close_data;
+ return priv->peer_close_data;
}
/**
@@ -2083,15 +2105,15 @@ soup_websocket_connection_close (SoupWebsocketConnection *self,
gushort code,
const char *data)
{
- SoupWebsocketConnectionPrivate *pv;
+
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
g_return_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self));
- pv = self->pv;
- g_return_if_fail (!pv->close_sent);
+ g_return_if_fail (!priv->close_sent);
g_return_if_fail (code != SOUP_WEBSOCKET_CLOSE_ABNORMAL &&
code != SOUP_WEBSOCKET_CLOSE_TLS_HANDSHAKE);
- if (pv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER)
+ if (priv->connection_type == SOUP_WEBSOCKET_CONNECTION_SERVER)
g_return_if_fail (code != SOUP_WEBSOCKET_CLOSE_NO_EXTENSION);
else
g_return_if_fail (code != SOUP_WEBSOCKET_CLOSE_SERVER_ERROR);
@@ -2112,12 +2134,11 @@ soup_websocket_connection_close (SoupWebsocketConnection *self,
guint64
soup_websocket_connection_get_max_incoming_payload_size (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), MAX_INCOMING_PAYLOAD_SIZE_DEFAULT);
- pv = self->pv;
- return pv->max_incoming_payload_size;
+ return priv->max_incoming_payload_size;
}
/**
@@ -2134,13 +2155,12 @@ void
soup_websocket_connection_set_max_incoming_payload_size (SoupWebsocketConnection *self,
guint64 max_incoming_payload_size)
{
- SoupWebsocketConnectionPrivate *pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
g_return_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self));
- pv = self->pv;
- if (pv->max_incoming_payload_size != max_incoming_payload_size) {
- pv->max_incoming_payload_size = max_incoming_payload_size;
+ if (priv->max_incoming_payload_size != max_incoming_payload_size) {
+ priv->max_incoming_payload_size = max_incoming_payload_size;
g_object_notify (G_OBJECT (self), "max-incoming-payload-size");
}
}
@@ -2158,12 +2178,11 @@ soup_websocket_connection_set_max_incoming_payload_size (SoupWebsocketConnection
guint
soup_websocket_connection_get_keepalive_interval (SoupWebsocketConnection *self)
{
- SoupWebsocketConnectionPrivate *pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
g_return_val_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self), 0);
- pv = self->pv;
- return pv->keepalive_interval;
+ return priv->keepalive_interval;
}
static gboolean
@@ -2194,21 +2213,20 @@ void
soup_websocket_connection_set_keepalive_interval (SoupWebsocketConnection *self,
guint interval)
{
- SoupWebsocketConnectionPrivate *pv;
+ SoupWebsocketConnectionPrivate *priv = soup_websocket_connection_get_instance_private (self);
g_return_if_fail (SOUP_IS_WEBSOCKET_CONNECTION (self));
- pv = self->pv;
- if (pv->keepalive_interval != interval) {
- pv->keepalive_interval = interval;
+ if (priv->keepalive_interval != interval) {
+ priv->keepalive_interval = interval;
g_object_notify (G_OBJECT (self), "keepalive-interval");
keepalive_stop_timeout (self);
if (interval > 0) {
- pv->keepalive_timeout = g_timeout_source_new_seconds (interval);
- g_source_set_callback (pv->keepalive_timeout, on_queue_ping, self, NULL);
- g_source_attach (pv->keepalive_timeout, pv->main_context);
+ priv->keepalive_timeout = g_timeout_source_new_seconds (interval);
+ g_source_set_callback (priv->keepalive_timeout, on_queue_ping, self, NULL);
+ g_source_attach (priv->keepalive_timeout, priv->main_context);
}
}
}
diff --git a/libsoup/websocket/soup-websocket-connection.h b/libsoup/websocket/soup-websocket-connection.h
index b5e90fb8..503ba19c 100644
--- a/libsoup/websocket/soup-websocket-connection.h
+++ b/libsoup/websocket/soup-websocket-connection.h
@@ -18,31 +18,18 @@
* along with this library; If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __SOUP_WEBSOCKET_CONNECTION_H__
-#define __SOUP_WEBSOCKET_CONNECTION_H__
+#pragma once
#include "soup-types.h"
#include "soup-websocket.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_WEBSOCKET_CONNECTION (soup_websocket_connection_get_type ())
-#define SOUP_WEBSOCKET_CONNECTION(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), SOUP_TYPE_WEBSOCKET_CONNECTION, SoupWebsocketConnection))
-#define SOUP_IS_WEBSOCKET_CONNECTION(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), SOUP_TYPE_WEBSOCKET_CONNECTION))
-#define SOUP_WEBSOCKET_CONNECTION_CLASS(k) (G_TYPE_CHECK_CLASS_CAST ((k), SOUP_TYPE_WEBSOCKET_CONNECTION, SoupWebsocketConnectionClass))
-#define SOUP_WEBSOCKET_CONNECTION_GET_CLASS(o) (G_TYPE_INSTANCE_GET_CLASS ((o), SOUP_TYPE_WEBSOCKET_CONNECTION, SoupWebsocketConnectionClass))
-#define SOUP_IS_WEBSOCKET_CONNECTION_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), SOUP_TYPE_WEBSOCKET_CONNECTION))
-
-typedef struct _SoupWebsocketConnectionPrivate SoupWebsocketConnectionPrivate;
-
-struct _SoupWebsocketConnection {
- GObject parent;
-
- /*< private >*/
- SoupWebsocketConnectionPrivate *pv;
-};
+#define SOUP_TYPE_WEBSOCKET_CONNECTION (soup_websocket_connection_get_type ())
+SOUP_AVAILABLE_IN_2_50
+G_DECLARE_DERIVABLE_TYPE (SoupWebsocketConnection, soup_websocket_connection, SOUP, WEBSOCKET_CONNECTION, GObject)
-typedef struct {
+struct _SoupWebsocketConnectionClass {
GObjectClass parent;
/* signals */
@@ -59,10 +46,7 @@ typedef struct {
void (* pong) (SoupWebsocketConnection *self,
GBytes *message);
-} SoupWebsocketConnectionClass;
-
-SOUP_AVAILABLE_IN_2_50
-GType soup_websocket_connection_get_type (void) G_GNUC_CONST;
+};
SOUP_AVAILABLE_IN_2_50
SoupWebsocketConnection *soup_websocket_connection_new (GIOStream *stream,
@@ -137,5 +121,3 @@ void soup_websocket_connection_set_keepalive_interval (SoupWebsoc
guint interval);
G_END_DECLS
-
-#endif /* __SOUP_WEBSOCKET_CONNECTION_H__ */
diff --git a/libsoup/websocket/soup-websocket-extension-deflate.c b/libsoup/websocket/soup-websocket-extension-deflate.c
index c7864426..c343f1d0 100644
--- a/libsoup/websocket/soup-websocket-extension-deflate.c
+++ b/libsoup/websocket/soup-websocket-extension-deflate.c
@@ -53,6 +53,10 @@ typedef struct {
gushort client_max_window_bits;
} Params;
+struct _SoupWebsocketExtensionDeflate {
+ SoupWebsocketExtension parent;
+};
+
typedef struct {
Params params;
diff --git a/libsoup/websocket/soup-websocket-extension-deflate.h b/libsoup/websocket/soup-websocket-extension-deflate.h
index e353965d..b5b4accf 100644
--- a/libsoup/websocket/soup-websocket-extension-deflate.h
+++ b/libsoup/websocket/soup-websocket-extension-deflate.h
@@ -20,30 +20,14 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_WEBSOCKET_EXTENSION_DEFLATE_H__
-#define __SOUP_WEBSOCKET_EXTENSION_DEFLATE_H__ 1
+#pragma once
#include "soup-websocket-extension.h"
-#define SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE (soup_websocket_extension_deflate_get_type ())
-#define SOUP_WEBSOCKET_EXTENSION_DEFLATE(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE, SoupWebsocketExtensionDeflate))
-#define SOUP_IS_WEBSOCKET_EXTENSION_DEFLATE(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE))
-#define SOUP_WEBSOCKET_EXTENSION_DEFLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE, SoupWebsocketExtensionDeflateClass))
-#define SOUP_IS_WEBSOCKET_EXTENSION_DEFLATE_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE))
-#define SOUP_WEBSOCKET_EXTENSION_DEFLATE_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE, SoupWebsocketExtensionDeflateClass))
-
-typedef struct _SoupWebsocketExtensionDeflate SoupWebsocketExtensionDeflate;
-typedef struct _SoupWebsocketExtensionDeflateClass SoupWebsocketExtensionDeflateClass;
-
-struct _SoupWebsocketExtensionDeflate {
- SoupWebsocketExtension parent;
-};
-
-struct _SoupWebsocketExtensionDeflateClass {
- SoupWebsocketExtensionClass parent_class;
-};
+G_BEGIN_DECLS
+#define SOUP_TYPE_WEBSOCKET_EXTENSION_DEFLATE (soup_websocket_extension_deflate_get_type ())
SOUP_AVAILABLE_IN_2_68
-GType soup_websocket_extension_deflate_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupWebsocketExtensionDeflate, soup_websocket_extension_deflate, SOUP, WEBSOCKET_EXTENSION_DEFLATE, SoupWebsocketExtension)
-#endif /* __SOUP_WEBSOCKET_EXTENSION_DEFLATE_H__ */
+G_END_DECLS
diff --git a/libsoup/websocket/soup-websocket-extension-manager.c b/libsoup/websocket/soup-websocket-extension-manager.c
index 69c4fd4a..90ca105d 100644
--- a/libsoup/websocket/soup-websocket-extension-manager.c
+++ b/libsoup/websocket/soup-websocket-extension-manager.c
@@ -62,6 +62,10 @@
static void soup_websocket_extension_manager_session_feature_init (SoupSessionFeatureInterface *feature_interface, gpointer interface_data);
+struct _SoupWebsocketExtensionManager {
+ GObject parent;
+};
+
typedef struct {
GPtrArray *extension_types;
} SoupWebsocketExtensionManagerPrivate;
diff --git a/libsoup/websocket/soup-websocket-extension-manager.h b/libsoup/websocket/soup-websocket-extension-manager.h
index 0940a53e..8c0a5f9d 100644
--- a/libsoup/websocket/soup-websocket-extension-manager.h
+++ b/libsoup/websocket/soup-websocket-extension-manager.h
@@ -20,31 +20,14 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_WEBSOCKET_EXTENSION_MANAGER_H__
-#define __SOUP_WEBSOCKET_EXTENSION_MANAGER_H__ 1
+#pragma once
#include "soup-types.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER (soup_websocket_extension_manager_get_type ())
-#define SOUP_WEBSOCKET_EXTENSION_MANAGER(object) (G_TYPE_CHECK_INSTANCE_CAST ((object), SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER, SoupWebsocketExtensionManager))
-#define SOUP_IS_WEBSOCKET_EXTENSION_MANAGER(object) (G_TYPE_CHECK_INSTANCE_TYPE ((object), SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER))
-#define SOUP_WEBSOCKET_EXTENSION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER, SoupWebsocketExtensionManagerClass))
-#define SOUP_IS_WEBSOCKET_EXTENSION_MANAGER_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER))
-#define SOUP_WEBSOCKET_EXTENSION_MANAGER_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER, SoupWebsocketExtensionManagerClass))
-
-typedef struct {
- GObject parent;
-} SoupWebsocketExtensionManager;
-
-typedef struct {
- GObjectClass parent_class;
-} SoupWebsocketExtensionManagerClass;
-
+#define SOUP_TYPE_WEBSOCKET_EXTENSION_MANAGER (soup_websocket_extension_manager_get_type ())
SOUP_AVAILABLE_IN_2_68
-GType soup_websocket_extension_manager_get_type (void);
+G_DECLARE_FINAL_TYPE (SoupWebsocketExtensionManager, soup_websocket_extension_manager, SOUP, WEBSOCKET_EXTENSION_MANAGER, GObject)
G_END_DECLS
-
-#endif /* __SOUP_WEBSOCKET_EXTENSION_MANAGER_H__ */
diff --git a/libsoup/websocket/soup-websocket-extension.h b/libsoup/websocket/soup-websocket-extension.h
index e8f345a0..7d2d3686 100644
--- a/libsoup/websocket/soup-websocket-extension.h
+++ b/libsoup/websocket/soup-websocket-extension.h
@@ -20,26 +20,18 @@
* Boston, MA 02110-1301, USA.
*/
-#ifndef __SOUP_WEBSOCKET_EXTENSION_H__
-#define __SOUP_WEBSOCKET_EXTENSION_H__ 1
+#pragma once
#include "soup-types.h"
#include "soup-websocket.h"
G_BEGIN_DECLS
-#define SOUP_TYPE_WEBSOCKET_EXTENSION (soup_websocket_extension_get_type ())
-#define SOUP_WEBSOCKET_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION, SoupWebsocketExtension))
-#define SOUP_IS_WEBSOCKET_EXTENSION(obj) (G_TYPE_CHECK_INSTANCE_TYPE ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION))
-#define SOUP_WEBSOCKET_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), SOUP_TYPE_WEBSOCKET_EXTENSION, SoupWebsocketExtensionClass))
-#define SOUP_IS_WEBSOCKET_EXTENSION_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION))
-#define SOUP_WEBSOCKET_EXTENSION_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), SOUP_TYPE_WEBSOCKET_EXTENSION, SoupWebsocketExtensionClass))
-
-struct _SoupWebsocketExtension {
- GObject parent;
-};
+#define SOUP_TYPE_WEBSOCKET_EXTENSION (soup_websocket_extension_get_type ())
+SOUP_AVAILABLE_IN_2_68
+G_DECLARE_DERIVABLE_TYPE (SoupWebsocketExtension, soup_websocket_extension, SOUP, WEBSOCKET_EXTENSION, GObject)
-typedef struct {
+struct _SoupWebsocketExtensionClass {
GObjectClass parent_class;
const char *name;
@@ -63,15 +55,8 @@ typedef struct {
GBytes *payload,
GError **error);
- /* Padding for future expansion */
- void (*_libsoup_reserved1) (void);
- void (*_libsoup_reserved2) (void);
- void (*_libsoup_reserved3) (void);
- void (*_libsoup_reserved4) (void);
-} SoupWebsocketExtensionClass;
-
-SOUP_AVAILABLE_IN_2_68
-GType soup_websocket_extension_get_type (void);
+ gpointer padding[6];
+};
SOUP_AVAILABLE_IN_2_68
gboolean soup_websocket_extension_configure (SoupWebsocketExtension *extension,
@@ -96,5 +81,3 @@ GBytes *soup_websocket_extension_process_incoming_message (Soup
GError **error);
G_END_DECLS
-
-#endif /* __SOUP_WEBSOCKET_EXTENSION_H__ */
diff --git a/libsoup/websocket/soup-websocket.h b/libsoup/websocket/soup-websocket.h
index b96dec2b..9f265e0a 100644
--- a/libsoup/websocket/soup-websocket.h
+++ b/libsoup/websocket/soup-websocket.h
@@ -18,8 +18,7 @@
* along with this library; If not, see <http://www.gnu.org/licenses/>.
*/
-#ifndef __SOUP_WEBSOCKET_H__
-#define __SOUP_WEBSOCKET_H__
+#pragma once
#include "soup-types.h"
@@ -113,5 +112,3 @@ soup_websocket_server_process_handshake_with_extensions (SoupMessage *msg,
GList **accepted_extensions);
G_END_DECLS
-
-#endif /* __SOUP_WEBSOCKET_H__ */
diff --git a/libsoup/xmlrpc/soup-xmlrpc.h b/libsoup/xmlrpc/soup-xmlrpc.h
index 2c76d440..2a32e466 100644
--- a/libsoup/xmlrpc/soup-xmlrpc.h
+++ b/libsoup/xmlrpc/soup-xmlrpc.h
@@ -3,8 +3,7 @@
* Copyright 2015 - Collabora Ltd.
*/
-#ifndef __SOUP_XMLRPC_H__
-#define __SOUP_XMLRPC_H__ 1
+#pragma once
#include "soup-types.h"
@@ -91,6 +90,6 @@ typedef enum {
SOUP_XMLRPC_FAULT_TRANSPORT_ERROR = -32300
} SoupXMLRPCFault;
-G_END_DECLS
+G_DEFINE_AUTOPTR_CLEANUP_FUNC (SoupXMLRPCParams, soup_xmlrpc_params_free)
-#endif /* __SOUP_XMLRPC_H__ */
+G_END_DECLS