Mon, 21 Dec 2015 14:46:12 -0500
Remove NULL-checks before free(). No functional change.
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
1 | /** |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
2 | * Purple is the legal property of its developers, whose names are too numerous |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
3 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
4 | * source distribution. |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
5 | * |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
6 | * This program is free software; you can redistribute it and/or modify |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
7 | * it under the terms of the GNU General Public License as published by |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
8 | * the Free Software Foundation; either version 2 of the License, or |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
9 | * (at your option) any later version. |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
10 | * |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
11 | * This program is distributed in the hope that it will be useful, |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
14 | * GNU General Public License for more details. |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
15 | * |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
16 | * You should have received a copy of the GNU General Public License |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
17 | * along with this program; if not, write to the Free Software |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
18 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
19 | */ |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
20 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
21 | #include "internal.h" |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
22 | #include "debug.h" |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
23 | #include "http.h" |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
24 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
25 | #include "relay.h" |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
26 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
27 | typedef struct { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
28 | GoogleSession *session; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
29 | JabberGoogleRelayCallback *cb; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
30 | } JabberGoogleRelayCallbackData; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
31 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
32 | static void |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
33 | jabber_google_relay_parse_response(const gchar *response, gchar **ip, |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
34 | guint *udp, guint *tcp, guint *ssltcp, gchar **username, gchar **password) |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
35 | { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
36 | gchar **lines = g_strsplit(response, "\n", -1); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
37 | int i = 0; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
38 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
39 | for (; lines[i] ; i++) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
40 | gchar *line = lines[i]; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
41 | gchar **parts = g_strsplit(line, "=", 2); |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30778
diff
changeset
|
42 | |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
43 | if (parts[0] && parts[1]) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
44 | if (purple_strequal(parts[0], "relay.ip")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
45 | *ip = g_strdup(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
46 | } else if (purple_strequal(parts[0], "relay.udp_port")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
47 | *udp = atoi(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
48 | } else if (purple_strequal(parts[0], "relay.tcp_port")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
49 | *tcp = atoi(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
50 | } else if (purple_strequal(parts[0], "relay.ssltcp_port")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
51 | *ssltcp = atoi(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
52 | } else if (purple_strequal(parts[0], "username")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
53 | *username = g_strdup(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
54 | } else if (purple_strequal(parts[0], "password")) { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
55 | *password = g_strdup(parts[1]); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
56 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
57 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
58 | g_strfreev(parts); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
59 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
60 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
61 | g_strfreev(lines); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
62 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
63 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
64 | static void |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
65 | jabber_google_relay_fetch_cb(PurpleHttpConnection *http_conn, |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
66 | PurpleHttpResponse *response, gpointer user_data) |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
67 | { |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
68 | JabberGoogleRelayCallbackData *data = |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
69 | (JabberGoogleRelayCallbackData *) user_data; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
70 | GoogleSession *session = data->session; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
71 | JabberGoogleRelayCallback *cb = data->cb; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
72 | gchar *relay_ip = NULL; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
73 | guint relay_udp = 0; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
74 | guint relay_tcp = 0; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
75 | guint relay_ssltcp = 0; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
76 | gchar *relay_username = NULL; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
77 | gchar *relay_password = NULL; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
78 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
79 | g_free(data); |
|
31294
73607ab89c6f
Remove trailing whitespace
Richard Laager <rlaager@pidgin.im>
parents:
30778
diff
changeset
|
80 | |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
81 | purple_debug_info("jabber", "got response on HTTP request to relay server\n"); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
82 | |
|
34287
6cd0c77b1f6a
HTTP: successful is spelled with one l
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
34238
diff
changeset
|
83 | if (purple_http_response_is_successful(response)) { |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
84 | const gchar *got_data = |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
85 | purple_http_response_get_data(response, NULL); |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
86 | purple_debug_info("jabber", "got Google relay request response:\n%s\n", |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
87 | got_data); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
88 | jabber_google_relay_parse_response(got_data, &relay_ip, &relay_udp, |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
89 | &relay_tcp, &relay_ssltcp, &relay_username, &relay_password); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
90 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
91 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
92 | if (cb) |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
93 | cb(session, relay_ip, relay_udp, relay_tcp, relay_ssltcp, |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
94 | relay_username, relay_password); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
95 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
96 | g_free(relay_ip); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
97 | g_free(relay_username); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
98 | g_free(relay_password); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
99 | } |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
100 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
101 | void |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
102 | jabber_google_do_relay_request(JabberStream *js, GoogleSession *session, |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
103 | JabberGoogleRelayCallback cb) |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
104 | { |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
105 | PurpleHttpRequest *req; |
|
30776
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
106 | JabberGoogleRelayCallbackData *data = g_new0(JabberGoogleRelayCallbackData, 1); |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
107 | |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
108 | data->session = session; |
|
fccc7736b20e
added new files for Google relay-related functions
Marcus Lundblad <malu@pidgin.im>
parents:
diff
changeset
|
109 | data->cb = cb; |
|
34238
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
110 | purple_debug_info("jabber", "sending Google relay request\n"); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
111 | |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
112 | req = purple_http_request_new(NULL); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
113 | purple_http_request_set_url_printf(req, "http://%s/create_session", |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
114 | js->google_relay_host); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
115 | /* yes, the relay token is included twice as different request headers, |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
116 | this is apparently needed to make Google's relay servers work... */ |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
117 | purple_http_request_header_set(req, "X-Talk-Google-Relay-Auth", js->google_relay_token); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
118 | purple_http_request_header_set(req, "X-Google-Relay-Auth", js->google_relay_token); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
119 | purple_http_request(js->gc, req, jabber_google_relay_fetch_cb, data); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
120 | purple_http_request_unref(req); |
|
771d87322c12
HTTP: migrate purple_util_fetch_url_request to new API for xmpp prpl
Tomasz Wasilczyk <tomkiewicz@cpw.pidgin.im>
parents:
33424
diff
changeset
|
121 | } |