/src/libsoup/libsoup/soup-socket-properties.c
Line | Count | Source |
1 | | /* -*- Mode: C; tab-width: 8; indent-tabs-mode: nil; c-basic-offset: 8 -*- */ |
2 | | /* |
3 | | * Copyright 2013 Red Hat, Inc. |
4 | | */ |
5 | | |
6 | | #ifdef HAVE_CONFIG_H |
7 | | #include <config.h> |
8 | | #endif |
9 | | |
10 | | #include "soup-socket-properties.h" |
11 | | #include "soup.h" |
12 | | |
13 | | SoupSocketProperties * |
14 | | soup_socket_properties_new (GInetSocketAddress *local_addr, |
15 | | GTlsInteraction *tls_interaction, |
16 | | guint io_timeout, |
17 | | guint idle_timeout) |
18 | 0 | { |
19 | 0 | SoupSocketProperties *props; |
20 | |
|
21 | 0 | props = g_atomic_rc_box_new0 (SoupSocketProperties); |
22 | |
|
23 | 0 | props->proxy_use_default = TRUE; |
24 | 0 | props->tlsdb_use_default = TRUE; |
25 | |
|
26 | 0 | props->local_addr = local_addr ? g_object_ref (local_addr) : NULL; |
27 | 0 | props->tls_interaction = tls_interaction ? g_object_ref (tls_interaction) : NULL; |
28 | |
|
29 | 0 | props->io_timeout = io_timeout; |
30 | 0 | props->idle_timeout = idle_timeout; |
31 | |
|
32 | 0 | return props; |
33 | 0 | } |
34 | | |
35 | | SoupSocketProperties * |
36 | | soup_socket_properties_ref (SoupSocketProperties *props) |
37 | 0 | { |
38 | 0 | g_atomic_rc_box_acquire (props); |
39 | |
|
40 | 0 | return props; |
41 | 0 | } |
42 | | |
43 | | static void |
44 | | soup_socket_properties_destroy (SoupSocketProperties *props) |
45 | 0 | { |
46 | 0 | g_clear_object (&props->proxy_resolver); |
47 | 0 | g_clear_object (&props->local_addr); |
48 | 0 | g_clear_object (&props->tlsdb); |
49 | 0 | g_clear_object (&props->tls_interaction); |
50 | 0 | } |
51 | | |
52 | | void |
53 | | soup_socket_properties_unref (SoupSocketProperties *props) |
54 | 0 | { |
55 | 0 | g_atomic_rc_box_release_full (props, (GDestroyNotify)soup_socket_properties_destroy); |
56 | 0 | } |
57 | | |
58 | | void |
59 | | soup_socket_properties_set_proxy_resolver (SoupSocketProperties *props, |
60 | | GProxyResolver *proxy_resolver) |
61 | 0 | { |
62 | 0 | props->proxy_use_default = FALSE; |
63 | |
|
64 | 0 | if (props->proxy_resolver == proxy_resolver) |
65 | 0 | return; |
66 | | |
67 | 0 | g_clear_object (&props->proxy_resolver); |
68 | 0 | props->proxy_resolver = proxy_resolver ? g_object_ref (proxy_resolver) : NULL; |
69 | 0 | } |
70 | | |
71 | | void |
72 | | soup_socket_properties_set_tls_database (SoupSocketProperties *props, |
73 | | GTlsDatabase *tlsdb) |
74 | 0 | { |
75 | 0 | props->tlsdb_use_default = FALSE; |
76 | |
|
77 | 0 | if (props->tlsdb == tlsdb) |
78 | 0 | return; |
79 | | |
80 | 0 | g_clear_object (&props->tlsdb); |
81 | 0 | props->tlsdb = tlsdb ? g_object_ref (tlsdb) : NULL; |
82 | 0 | } |
83 | | |
84 | | G_DEFINE_BOXED_TYPE (SoupSocketProperties, soup_socket_properties, soup_socket_properties_ref, soup_socket_properties_unref) |