libpurple/purple-gio.c

Fri, 26 Aug 2016 18:06:39 -0500

author
Mike Ruprecht <cmaiku@gmail.com>
date
Fri, 26 Aug 2016 18:06:39 -0500
changeset 37962
13e2a9fcbddd
parent 37956
21cffc3446a0
child 37965
b67fb3fb5f85
permissions
-rw-r--r--

purple-gio: Add purple_gio_socket_client_new() helper function

This patch adds purple_gio_socket_client_new() as a new helper function
to simplify GSocketClient creation for protocol plugins. It gets the
appropriate proxy settings from the account and sets up TLS certificate
handling.

37956
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
1 /*
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
2 *
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
3 * purple
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
4 *
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
5 * Purple is the legal property of its developers, whose names are too numerous
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
6 * to list here. Please refer to the COPYRIGHT file distributed with this
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
7 * source distribution.
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
8 *
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
9 * This program is free software; you can redistribute it and/or modify
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
10 * it under the terms of the GNU General Public License as published by
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
11 * the Free Software Foundation; either version 2 of the License, or
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
12 * (at your option) any later version.
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
13 *
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
14 * This program is distributed in the hope that it will be useful,
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
17 * GNU General Public License for more details.
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
18 *
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
19 * You should have received a copy of the GNU General Public License
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
20 * along with this program; if not, write to the Free Software
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
21 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
22 */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
23
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
24 #include "internal.h"
37962
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
25 #include "proxy.h"
37956
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
26 #include "purple-gio.h"
37962
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
27 #include "tls-certificate.h"
37956
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
28
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
29 typedef struct {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
30 GIOStream *stream;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
31 GInputStream *input;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
32 GOutputStream *output;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
33 } GracefulCloseData;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
34
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
35 static gboolean
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
36 graceful_close_cb(gpointer user_data)
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
37 {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
38 GracefulCloseData *data = user_data;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
39 GError *error = NULL;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
40
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
41 if (g_input_stream_has_pending(data->input) ||
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
42 g_output_stream_has_pending(data->output)) {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
43 /* Has pending operations. Not ready to close yet.
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
44 * Try again later.
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
45 */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
46 return G_SOURCE_CONTINUE;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
47 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
48
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
49 /* Finally can gracefully close */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
50
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
51 /* Close wrapper input stream, if any */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
52 if (data->input != NULL &&
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
53 !g_input_stream_close(data->input, NULL, &error)) {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
54 purple_debug_warning("gio",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
55 "Error closing input stream: %s",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
56 error->message);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
57 g_clear_error(&error);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
58 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
59
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
60 g_clear_object(&data->input);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
61
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
62 /* Close wrapper output stream, if any */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
63 if (data->output != NULL &&
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
64 !g_output_stream_close(data->output, NULL, &error)) {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
65 purple_debug_warning("gio",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
66 "Error closing output stream: %s",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
67 error->message);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
68 g_clear_error(&error);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
69 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
70
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
71 g_clear_object(&data->output);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
72
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
73 /* Close io stream */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
74 if (!g_io_stream_close(data->stream, NULL, &error)) {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
75 purple_debug_warning("gio",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
76 "Error closing stream: %s",
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
77 error->message);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
78 g_clear_error(&error);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
79 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
80
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
81 g_clear_object(&data->stream);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
82
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
83 /* Clean up */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
84 g_free(data);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
85 return G_SOURCE_REMOVE;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
86 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
87
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
88 void
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
89 purple_gio_graceful_close(GIOStream *stream,
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
90 GInputStream *input, GOutputStream *output)
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
91 {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
92 GracefulCloseData *data;
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
93
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
94 g_return_if_fail(G_IS_IO_STREAM(stream));
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
95 g_return_if_fail(input == NULL || G_IS_INPUT_STREAM(input));
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
96 g_return_if_fail(output == NULL || G_IS_OUTPUT_STREAM(output));
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
97
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
98 data = g_new(GracefulCloseData, 1);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
99 data->stream = g_object_ref(stream);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
100 data->input = g_object_ref(input);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
101 data->output = g_object_ref(output);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
102
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
103 /* Try gracefully closing the stream synchronously */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
104 if (graceful_close_cb(data) == G_SOURCE_CONTINUE) {
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
105 /* Has pending operations. Do so asynchronously */
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
106 g_idle_add(graceful_close_cb, data);
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
107 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
108 }
21cffc3446a0 purple-gio: Add purple-gio.[ch] containing purple_gio_graceful_close()
Mike Ruprecht <cmaiku@gmail.com>
parents:
diff changeset
109
37962
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
110 GSocketClient *
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
111 purple_gio_socket_client_new(PurpleAccount *account, GError **error)
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
112 {
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
113 GProxyResolver *resolver;
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
114 GSocketClient *client;
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
115
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
116 resolver = purple_proxy_get_proxy_resolver(account);
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
117
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
118 if (resolver == NULL) {
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
119 g_set_error_literal(error, PURPLE_CONNECTION_ERROR,
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
120 PURPLE_CONNECTION_ERROR_INVALID_SETTINGS,
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
121 _("Invalid proxy settings"));
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
122 return NULL;
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
123 }
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
124
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
125 client = g_socket_client_new();
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
126 g_socket_client_set_proxy_resolver(client, resolver);
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
127 g_object_unref(resolver);
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
128
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
129 /* Attach purple's tls certificate handler in case tls is used */
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
130 purple_tls_certificate_attach_to_socket_client(client);
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
131
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
132 return client;
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
133 }
13e2a9fcbddd purple-gio: Add purple_gio_socket_client_new() helper function
Mike Ruprecht <cmaiku@gmail.com>
parents: 37956
diff changeset
134

mercurial