Tue, 27 Jun 2017 11:58:03 -0500
facebook: Fix reading MQTT ping responses
MQTT ping packets are only a two byte header with a zero length
content. The Gio port of this was coded such that packets with zero
length contents were considered to not have been fully received.
This caused the MQTT connection to get stuck after a ping response
was received and eventually timeout. Therefore, the connection
would "fail" and reconnect every 1.5 minutes or so.
This patch fixes this by reworking that logic to also accept fully
received packets with a zero length content.
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
1 | /* purple |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
2 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
3 | * Purple is the legal property of its developers, whose names are too numerous |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
4 | * to list here. Please refer to the COPYRIGHT file distributed with this |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
5 | * source distribution. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
6 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
7 | * This program is free software; you can redistribute it and/or modify |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
8 | * it under the terms of the GNU General Public License as published by |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
9 | * the Free Software Foundation; either version 2 of the License, or |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
10 | * (at your option) any later version. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
11 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
12 | * This program is distributed in the hope that it will be useful, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
13 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
14 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
15 | * GNU General Public License for more details. |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
16 | * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
17 | * You should have received a copy of the GNU General Public License |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
18 | * along with this program; if not, write to the Free Software |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
19 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
20 | */ |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
21 | |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
22 | #include "internal.h" |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
23 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
24 | #include <string.h> |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
25 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
26 | #include "http.h" |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
27 | |
|
37433
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
28 | struct _FbHttpConns |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
29 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
30 | GHashTable *cons; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
31 | gboolean canceled; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
32 | }; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
33 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
34 | GQuark |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
35 | fb_http_error_quark(void) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
36 | { |
|
37252
be11d9f148a6
facebook: initialize static GQuarks
James Geboski <jgeboski@gmail.com>
parents:
37250
diff
changeset
|
37 | static GQuark q = 0; |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
38 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
39 | if (G_UNLIKELY(q == 0)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
40 | q = g_quark_from_static_string("fb-http-error-quark"); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
41 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
42 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
43 | return q; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
44 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
45 | |
|
37433
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
46 | FbHttpConns * |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
47 | fb_http_conns_new(void) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
48 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
49 | FbHttpConns *cons; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
50 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
51 | cons = g_new0(FbHttpConns, 1); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
52 | cons->cons = g_hash_table_new(g_direct_hash, g_direct_equal); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
53 | return cons; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
54 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
55 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
56 | void |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
57 | fb_http_conns_free(FbHttpConns *cons) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
58 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
59 | g_return_if_fail(cons != NULL); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
60 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
61 | g_hash_table_destroy(cons->cons); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
62 | g_free(cons); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
63 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
64 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
65 | void |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
66 | fb_http_conns_cancel_all(FbHttpConns *cons) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
67 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
68 | GHashTableIter iter; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
69 | gpointer con; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
70 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
71 | g_return_if_fail(cons != NULL); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
72 | g_return_if_fail(!cons->canceled); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
73 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
74 | cons->canceled = TRUE; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
75 | g_hash_table_iter_init(&iter, cons->cons); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
76 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
77 | while (g_hash_table_iter_next(&iter, &con, NULL)) { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
78 | g_hash_table_iter_remove(&iter); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
79 | purple_http_conn_cancel(con); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
80 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
81 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
82 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
83 | gboolean |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
84 | fb_http_conns_is_canceled(FbHttpConns *cons) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
85 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
86 | g_return_val_if_fail(cons != NULL, TRUE); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
87 | return cons->canceled; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
88 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
89 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
90 | void |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
91 | fb_http_conns_add(FbHttpConns *cons, PurpleHttpConnection *con) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
92 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
93 | g_return_if_fail(cons != NULL); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
94 | g_return_if_fail(!cons->canceled); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
95 | g_hash_table_replace(cons->cons, con, con); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
96 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
97 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
98 | void |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
99 | fb_http_conns_remove(FbHttpConns *cons, PurpleHttpConnection *con) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
100 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
101 | g_return_if_fail(cons != NULL); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
102 | g_return_if_fail(!cons->canceled); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
103 | g_hash_table_remove(cons->cons, con); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
104 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
105 | |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
106 | void |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
107 | fb_http_conns_reset(FbHttpConns *cons) |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
108 | { |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
109 | g_return_if_fail(cons != NULL); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
110 | cons->canceled = FALSE; |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
111 | g_hash_table_remove_all(cons->cons); |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
112 | } |
|
50bb40c42245
facebook: implemented better HTTP connection handling
James Geboski <jgeboski@gmail.com>
parents:
37354
diff
changeset
|
113 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
114 | gboolean |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
115 | fb_http_error_chk(PurpleHttpResponse *res, GError **error) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
116 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
117 | const gchar *msg; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
118 | gint code; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
119 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
120 | if (purple_http_response_is_successful(res)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
121 | return TRUE; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
122 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
123 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
124 | msg = purple_http_response_get_error(res); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
125 | code = purple_http_response_get_code(res); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
126 | g_set_error(error, FB_HTTP_ERROR, code, "%s", msg); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
127 | return FALSE; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
128 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
129 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
130 | FbHttpParams * |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
131 | fb_http_params_new(void) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
132 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
133 | return g_hash_table_new_full(g_str_hash, g_str_equal, g_free, g_free); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
134 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
135 | |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
136 | FbHttpParams * |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
137 | fb_http_params_new_parse(const gchar *data, gboolean isurl) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
138 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
139 | const gchar *tail; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
140 | gchar *key; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
141 | gchar **ps; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
142 | gchar *val; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
143 | guint i; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
144 | FbHttpParams *params; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
145 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
146 | params = fb_http_params_new(); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
147 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
148 | if (data == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
149 | return params; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
150 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
151 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
152 | if (isurl) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
153 | data = strchr(data, '?'); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
154 | |
|
37479
94b23a04da62
facebook: fixed a few issues reported by Coverity
James Geboski <jgeboski@gmail.com>
parents:
37471
diff
changeset
|
155 | if (data == NULL) { |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
156 | return params; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
157 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
158 | |
|
37479
94b23a04da62
facebook: fixed a few issues reported by Coverity
James Geboski <jgeboski@gmail.com>
parents:
37471
diff
changeset
|
159 | tail = strchr(++data, '#'); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
160 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
161 | if (tail != NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
162 | data = g_strndup(data, tail - data); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
163 | } else { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
164 | data = g_strdup(data); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
165 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
166 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
167 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
168 | ps = g_strsplit(data, "&", 0); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
169 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
170 | for (i = 0; ps[i] != NULL; i++) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
171 | key = ps[i]; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
172 | val = strchr(ps[i], '='); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
173 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
174 | if (val == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
175 | continue; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
176 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
177 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
178 | *(val++) = 0; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
179 | key = g_uri_unescape_string(key, NULL); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
180 | val = g_uri_unescape_string(val, NULL); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
181 | g_hash_table_replace(params, key, val); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
182 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
183 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
184 | if (isurl) { |
|
37471
32c1e77d0474
facebook: coding style consistencies
James Geboski <jgeboski@gmail.com>
parents:
37433
diff
changeset
|
185 | g_free((gchar *) data); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
186 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
187 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
188 | g_strfreev(ps); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
189 | return params; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
190 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
191 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
192 | void |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
193 | fb_http_params_free(FbHttpParams *params) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
194 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
195 | g_hash_table_destroy(params); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
196 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
197 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
198 | gchar * |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
199 | fb_http_params_close(FbHttpParams *params, const gchar *url) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
200 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
201 | GHashTableIter iter; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
202 | gpointer key; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
203 | gpointer val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
204 | GString *ret; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
205 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
206 | g_hash_table_iter_init(&iter, params); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
207 | ret = g_string_new(NULL); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
208 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
209 | while (g_hash_table_iter_next(&iter, &key, &val)) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
210 | if (val == NULL) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
211 | g_hash_table_iter_remove(&iter); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
212 | continue; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
213 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
214 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
215 | if (ret->len > 0) { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
216 | g_string_append_c(ret, '&'); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
217 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
218 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
219 | g_string_append_uri_escaped(ret, key, NULL, TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
220 | g_string_append_c(ret, '='); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
221 | g_string_append_uri_escaped(ret, val, NULL, TRUE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
222 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
223 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
224 | if (url != NULL) { |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
225 | g_string_prepend_c(ret, '?'); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
226 | g_string_prepend(ret, url); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
227 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
228 | |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
229 | fb_http_params_free(params); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
230 | return g_string_free(ret, FALSE); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
231 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
232 | |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
233 | static const gchar * |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
234 | fb_http_params_get(FbHttpParams *params, const gchar *name, GError **error) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
235 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
236 | const gchar *ret; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
237 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
238 | ret = g_hash_table_lookup(params, name); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
239 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
240 | if (ret == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
241 | g_set_error(error, FB_HTTP_ERROR, FB_HTTP_ERROR_NOMATCH, |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
242 | _("No matches for %s"), name); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
243 | return NULL; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
244 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
245 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
246 | return ret; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
247 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
248 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
249 | gboolean |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
250 | fb_http_params_get_bool(FbHttpParams *params, const gchar *name, |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
251 | GError **error) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
252 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
253 | const gchar *val; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
254 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
255 | val = fb_http_params_get(params, name, error); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
256 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
257 | if (val == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
258 | return FALSE; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
259 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
260 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
261 | return g_ascii_strcasecmp(val, "TRUE") == 0; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
262 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
263 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
264 | gdouble |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
265 | fb_http_params_get_dbl(FbHttpParams *params, const gchar *name, |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
266 | GError **error) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
267 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
268 | const gchar *val; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
269 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
270 | val = fb_http_params_get(params, name, error); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
271 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
272 | if (val == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
273 | return 0.0; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
274 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
275 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
276 | return g_ascii_strtod(val, NULL); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
277 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
278 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
279 | gint64 |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
280 | fb_http_params_get_int(FbHttpParams *params, const gchar *name, |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
281 | GError **error) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
282 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
283 | const gchar *val; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
284 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
285 | val = fb_http_params_get(params, name, error); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
286 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
287 | if (val == NULL) { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
288 | return 0; |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
289 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
290 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
291 | return g_ascii_strtoll(val, NULL, 10); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
292 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
293 | |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
294 | const gchar * |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
295 | fb_http_params_get_str(FbHttpParams *params, const gchar *name, |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
296 | GError **error) |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
297 | { |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
298 | return fb_http_params_get(params, name, error); |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
299 | } |
|
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
300 | |
|
37315
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
301 | gchar * |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
302 | fb_http_params_dup_str(FbHttpParams *params, const gchar *name, |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
303 | GError **error) |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
304 | { |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
305 | const gchar *str; |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
306 | |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
307 | str = fb_http_params_get(params, name, error); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
308 | return g_strdup(str); |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
309 | } |
|
7a7771557143
facebook: implemented handling of message attachments
James Geboski <jgeboski@gmail.com>
parents:
37314
diff
changeset
|
310 | |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
311 | static void |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
312 | fb_http_params_set(FbHttpParams *params, const gchar *name, gchar *value) |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
313 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
314 | gchar *key; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
315 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
316 | key = g_strdup(name); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
317 | g_hash_table_replace(params, key, value); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
318 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
319 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
320 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
321 | fb_http_params_set_bool(FbHttpParams *params, const gchar *name, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
322 | gboolean value) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
323 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
324 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
325 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
326 | val = g_strdup(value ? "true" : "false"); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
327 | fb_http_params_set(params, name, val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
328 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
329 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
330 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
331 | fb_http_params_set_dbl(FbHttpParams *params, const gchar *name, gdouble value) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
332 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
333 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
334 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
335 | val = g_strdup_printf("%f", value); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
336 | fb_http_params_set(params, name, val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
337 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
338 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
339 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
340 | fb_http_params_set_int(FbHttpParams *params, const gchar *name, gint64 value) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
341 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
342 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
343 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
344 | val = g_strdup_printf("%" G_GINT64_FORMAT, value); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
345 | fb_http_params_set(params, name, val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
346 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
347 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
348 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
349 | fb_http_params_set_str(FbHttpParams *params, const gchar *name, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
350 | const gchar *value) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
351 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
352 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
353 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
354 | val = g_strdup(value); |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
355 | fb_http_params_set(params, name, val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
356 | } |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
357 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
358 | void |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
359 | fb_http_params_set_strf(FbHttpParams *params, const gchar *name, |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
360 | const gchar *format, ...) |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
361 | { |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
362 | gchar *val; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
363 | va_list ap; |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
364 | |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
365 | va_start(ap, format); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
366 | val = g_strdup_vprintf(format, ap); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
367 | va_end(ap); |
|
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
368 | |
|
37257
5ba291680ac4
facebook: compare checksums before fetching icons
James Geboski <jgeboski@gmail.com>
parents:
37252
diff
changeset
|
369 | fb_http_params_set(params, name, val); |
|
37250
3f5570a17b15
facebook: initial import of bitlbee-facebook
James Geboski <jgeboski@gmail.com>
parents:
diff
changeset
|
370 | } |
|
37354
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
371 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
372 | gboolean |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
373 | fb_http_urlcmp(const gchar *url1, const gchar *url2, gboolean protocol) |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
374 | { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
375 | const gchar *str1; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
376 | const gchar *str2; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
377 | gboolean ret = TRUE; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
378 | gint int1; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
379 | gint int2; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
380 | guint i; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
381 | PurpleHttpURL *purl1; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
382 | PurpleHttpURL *purl2; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
383 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
384 | static const const gchar * (*funcs[]) (const PurpleHttpURL *url) = { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
385 | /* Always first so it can be skipped */ |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
386 | purple_http_url_get_protocol, |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
387 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
388 | purple_http_url_get_fragment, |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
389 | purple_http_url_get_host, |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
390 | purple_http_url_get_password, |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
391 | purple_http_url_get_path, |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
392 | purple_http_url_get_username |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
393 | }; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
394 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
395 | if ((url1 == NULL) || (url2 == NULL)) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
396 | return url1 == url2; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
397 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
398 | |
|
38186
274f63f95cc2
facebook: fb_http_urlcmp: more loose comparison, to avoid showing urls twice
dequis <dx@dxzone.com.ar>
parents:
37479
diff
changeset
|
399 | if (strstr(url1, url2) != NULL || strstr(url2, url1) != NULL) { |
|
274f63f95cc2
facebook: fb_http_urlcmp: more loose comparison, to avoid showing urls twice
dequis <dx@dxzone.com.ar>
parents:
37479
diff
changeset
|
400 | return TRUE; |
|
274f63f95cc2
facebook: fb_http_urlcmp: more loose comparison, to avoid showing urls twice
dequis <dx@dxzone.com.ar>
parents:
37479
diff
changeset
|
401 | } |
|
274f63f95cc2
facebook: fb_http_urlcmp: more loose comparison, to avoid showing urls twice
dequis <dx@dxzone.com.ar>
parents:
37479
diff
changeset
|
402 | |
|
37354
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
403 | purl1 = purple_http_url_parse(url1); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
404 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
405 | if (purl1 == NULL) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
406 | return g_ascii_strcasecmp(url1, url2) == 0; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
407 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
408 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
409 | purl2 = purple_http_url_parse(url2); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
410 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
411 | if (purl2 == NULL) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
412 | purple_http_url_free(purl1); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
413 | return g_ascii_strcasecmp(url1, url2) == 0; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
414 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
415 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
416 | for (i = protocol ? 0 : 1; i < G_N_ELEMENTS(funcs); i++) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
417 | str1 = funcs[i](purl1); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
418 | str2 = funcs[i](purl2); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
419 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
420 | if (!purple_strequal(str1, str2)) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
421 | ret = FALSE; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
422 | break; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
423 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
424 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
425 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
426 | if (ret && protocol) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
427 | int1 = purple_http_url_get_port(purl1); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
428 | int2 = purple_http_url_get_port(purl2); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
429 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
430 | if (int1 != int2) { |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
431 | ret = FALSE; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
432 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
433 | } |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
434 | |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
435 | purple_http_url_free(purl1); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
436 | purple_http_url_free(purl2); |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
437 | return ret; |
|
14857ad5b6b7
facebook: fixed URL comparisons being overly strict
James Geboski <jgeboski@gmail.com>
parents:
37315
diff
changeset
|
438 | } |