Wed, 10 Oct 2007 15:35:01 +0000
Show a snazzy message with a link to the SSL FAQ if the connection died for
that reason; don't talk about "correcting the error" if you sign on elsewhere,
just about needing to reenable.
| 5717 | 1 | /* |
|
10297
b36800725b7a
[gaim-migrate @ 11480]
Evan Schoenberg <evands@pidgin.im>
parents:
10211
diff
changeset
|
2 | * @file gtkconn.c GTK+ Connection API |
|
16254
eeb2bba4dc94
Rename the Doxygen group from gtkui to pidgin.
Richard Laager <rlaager@pidgin.im>
parents:
16071
diff
changeset
|
3 | * @ingroup pidgin |
|
20147
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
4 | */ |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
5 | |
|
66f05a854eee
applied changes from 8a731bbd0197fbcc91a705c2d8f528154216defa
Richard Laager <rlaager@pidgin.im>
parents:
19859
diff
changeset
|
6 | /* pidgin |
| 5717 | 7 | * |
|
15931
716b5fac1895
Re-sed the copyright notices so they don't all talk about Purple.
Richard Laager <rlaager@pidgin.im>
parents:
15884
diff
changeset
|
8 | * Pidgin is the legal property of its developers, whose names are too numerous |
| 8046 | 9 | * to list here. Please refer to the COPYRIGHT file distributed with this |
| 10 | * source distribution. | |
| 5717 | 11 | * |
| 12 | * This program is free software; you can redistribute it and/or modify | |
| 13 | * it under the terms of the GNU General Public License as published by | |
| 14 | * the Free Software Foundation; either version 2 of the License, or | |
| 15 | * (at your option) any later version. | |
| 16 | * | |
| 17 | * This program is distributed in the hope that it will be useful, | |
| 18 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
| 19 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
| 20 | * GNU General Public License for more details. | |
| 21 | * | |
| 22 | * You should have received a copy of the GNU General Public License | |
| 23 | * along with this program; if not, write to the Free Software | |
|
19859
71d37b57eff2
The FSF changed its address a while ago; our files were out of date.
John Bailey <rekkanoryo@rekkanoryo.org>
parents:
16752
diff
changeset
|
24 | * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02111-1301 USA |
| 5717 | 25 | */ |
| 9791 | 26 | #include "internal.h" |
| 15577 | 27 | #include "pidgin.h" |
| 5717 | 28 | |
| 29 | #include "account.h" | |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
30 | #include "debug.h" |
|
6460
fc288e7221ca
[gaim-migrate @ 6969]
Christian Hammond <chipx86@chipx86.com>
parents:
6371
diff
changeset
|
31 | #include "notify.h" |
| 6216 | 32 | #include "prefs.h" |
| 10643 | 33 | #include "gtkblist.h" |
|
12404
657afdf0f596
[gaim-migrate @ 14711]
Richard Laager <rlaager@pidgin.im>
parents:
12296
diff
changeset
|
34 | #include "gtkconn.h" |
|
657afdf0f596
[gaim-migrate @ 14711]
Richard Laager <rlaager@pidgin.im>
parents:
12296
diff
changeset
|
35 | #include "gtkdialogs.h" |
| 10643 | 36 | #include "gtkstatusbox.h" |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
37 | #include "pidginstock.h" |
|
12404
657afdf0f596
[gaim-migrate @ 14711]
Richard Laager <rlaager@pidgin.im>
parents:
12296
diff
changeset
|
38 | #include "gtkutils.h" |
|
5872
754c63f29b77
[gaim-migrate @ 6304]
Christian Hammond <chipx86@chipx86.com>
parents:
5746
diff
changeset
|
39 | #include "util.h" |
| 5717 | 40 | |
| 14053 | 41 | #define INITIAL_RECON_DELAY_MIN 8000 |
| 42 | #define INITIAL_RECON_DELAY_MAX 60000 | |
| 43 | ||
|
11721
c74083492667
[gaim-migrate @ 14012]
Mark Doliner <markdoliner@pidgin.im>
parents:
11638
diff
changeset
|
44 | #define MAX_RECON_DELAY 600000 |
|
20433
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
45 | #define MAX_RACCOON_DELAY "shorter in urban areas" |
| 11523 | 46 | |
| 47 | typedef struct { | |
| 48 | int delay; | |
| 49 | guint timeout; | |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
50 | } PidginAutoRecon; |
| 11523 | 51 | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
52 | /** |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
53 | * Contains accounts that are auto-reconnecting. |
| 15884 | 54 | * The key is a pointer to the PurpleAccount and the |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
55 | * value is a pointer to a PidginAutoRecon. |
|
13013
fde187d968dc
[gaim-migrate @ 15366]
Mark Doliner <markdoliner@pidgin.im>
parents:
12607
diff
changeset
|
56 | */ |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
57 | static GHashTable *auto_reconns = NULL; |
| 11523 | 58 | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
59 | static void |
| 15884 | 60 | pidgin_connection_connect_progress(PurpleConnection *gc, |
| 5717 | 61 | const char *text, size_t step, size_t step_count) |
| 62 | { | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
63 | PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); |
| 10643 | 64 | if (!gtkblist) |
| 65 | return; | |
| 15577 | 66 | pidgin_status_box_set_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox), |
| 15884 | 67 | (purple_connections_get_connecting() != NULL)); |
| 15577 | 68 | pidgin_status_box_pulse_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox)); |
| 5717 | 69 | } |
|
13756
c7679a3eefb6
[gaim-migrate @ 16165]
Mark Doliner <markdoliner@pidgin.im>
parents:
13732
diff
changeset
|
70 | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
71 | static void |
| 15884 | 72 | pidgin_connection_connected(PurpleConnection *gc) |
| 5717 | 73 | { |
| 15884 | 74 | PurpleAccount *account; |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
75 | PidginBuddyList *gtkblist; |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
76 | |
| 15884 | 77 | account = purple_connection_get_account(gc); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
78 | gtkblist = pidgin_blist_get_default_gtk_blist(); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
79 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
80 | if (gtkblist != NULL) |
| 15577 | 81 | pidgin_status_box_set_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox), |
| 15884 | 82 | (purple_connections_get_connecting() != NULL)); |
|
12607
4622f0adedf4
[gaim-migrate @ 14943]
Mark Doliner <markdoliner@pidgin.im>
parents:
12583
diff
changeset
|
83 | |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
84 | g_hash_table_remove(auto_reconns, account); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
85 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
86 | pidgin_blist_update_account_error_state(account, NULL); |
| 5717 | 87 | } |
| 88 | ||
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
89 | static void |
| 15884 | 90 | pidgin_connection_disconnected(PurpleConnection *gc) |
| 5717 | 91 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
92 | PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); |
| 10643 | 93 | if (!gtkblist) |
| 94 | return; | |
| 15577 | 95 | pidgin_status_box_set_connecting(PIDGIN_STATUS_BOX(gtkblist->statusbox), |
| 15884 | 96 | (purple_connections_get_connecting() != NULL)); |
|
5883
290fe1d16e60
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
97 | |
| 15884 | 98 | if (purple_connections_get_all() != NULL) |
|
5883
290fe1d16e60
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
99 | return; |
|
290fe1d16e60
[gaim-migrate @ 6315]
Christian Hammond <chipx86@chipx86.com>
parents:
5872
diff
changeset
|
100 | |
|
16263
27e0ef0f38e6
Word on the street is that we don't want things named pidginfoo_bar(), but
Richard Laager <rlaager@pidgin.im>
parents:
16254
diff
changeset
|
101 | pidgin_dialogs_destroy_all(); |
| 5717 | 102 | } |
| 103 | ||
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
104 | static void |
| 11523 | 105 | free_auto_recon(gpointer data) |
| 7493 | 106 | { |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
107 | PidginAutoRecon *info = data; |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
108 | |
| 11523 | 109 | if (info->timeout != 0) |
| 110 | g_source_remove(info->timeout); | |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
111 | |
| 11523 | 112 | g_free(info); |
| 7493 | 113 | } |
| 114 | ||
| 11523 | 115 | static gboolean |
| 116 | do_signon(gpointer data) | |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
117 | { |
| 15884 | 118 | PurpleAccount *account = data; |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
119 | PidginAutoRecon *info; |
| 15884 | 120 | PurpleStatus *status; |
|
10916
3de20dd2dade
[gaim-migrate @ 12675]
Stu Tomlinson <nosnilmot@pidgin.im>
parents:
10915
diff
changeset
|
121 | |
| 15884 | 122 | purple_debug_info("autorecon", "do_signon called\n"); |
| 11523 | 123 | g_return_val_if_fail(account != NULL, FALSE); |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
124 | info = g_hash_table_lookup(auto_reconns, account); |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
125 | |
| 11523 | 126 | if (info) |
| 127 | info->timeout = 0; | |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
128 | |
| 15884 | 129 | status = purple_account_get_active_status(account); |
| 130 | if (purple_status_is_online(status)) | |
|
13375
5ce3cb98de9f
[gaim-migrate @ 15747]
Mark Doliner <markdoliner@pidgin.im>
parents:
13129
diff
changeset
|
131 | { |
| 15884 | 132 | purple_debug_info("autorecon", "calling purple_account_connect\n"); |
| 133 | purple_account_connect(account); | |
| 134 | purple_debug_info("autorecon", "done calling purple_account_connect\n"); | |
|
13375
5ce3cb98de9f
[gaim-migrate @ 15747]
Mark Doliner <markdoliner@pidgin.im>
parents:
13129
diff
changeset
|
135 | } |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
136 | |
| 11523 | 137 | return FALSE; |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
138 | } |
|
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
139 | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
140 | static void |
|
20433
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
141 | pidgin_connection_report_disconnect_reason (PurpleConnection *gc, |
|
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
142 | PurpleDisconnectReason reason, |
|
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
143 | const char *text) |
| 7399 | 144 | { |
| 15884 | 145 | PurpleAccount *account = NULL; |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
146 | PidginAutoRecon *info; |
|
20622
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
147 | GList *list; |
| 7808 | 148 | |
| 15884 | 149 | account = purple_connection_get_account(gc); |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
150 | info = g_hash_table_lookup(auto_reconns, account); |
|
7912
b8f84918e7c1
[gaim-migrate @ 8573]
Mark Doliner <markdoliner@pidgin.im>
parents:
7890
diff
changeset
|
151 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
152 | pidgin_blist_update_account_error_state(account, text); |
|
20433
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
153 | if (!purple_connection_reason_is_fatal (reason)) { |
|
12009
06852325c88f
[gaim-migrate @ 14302]
Mark Doliner <markdoliner@pidgin.im>
parents:
11721
diff
changeset
|
154 | if (info == NULL) { |
|
15883
969b74a3e27a
According to etags, pidgin/ should be completely clean of references to 'gaim' as a client
Sean Egan <seanegan@pidgin.im>
parents:
15577
diff
changeset
|
155 | info = g_new0(PidginAutoRecon, 1); |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
156 | g_hash_table_insert(auto_reconns, account, info); |
| 14053 | 157 | info->delay = g_random_int_range(INITIAL_RECON_DELAY_MIN, INITIAL_RECON_DELAY_MAX); |
|
7483
08237091e8a5
[gaim-migrate @ 8096]
Mark Doliner <markdoliner@pidgin.im>
parents:
7431
diff
changeset
|
158 | } else { |
| 11523 | 159 | info->delay = MIN(2 * info->delay, MAX_RECON_DELAY); |
| 160 | if (info->timeout != 0) | |
| 161 | g_source_remove(info->timeout); | |
|
7483
08237091e8a5
[gaim-migrate @ 8096]
Mark Doliner <markdoliner@pidgin.im>
parents:
7431
diff
changeset
|
162 | } |
| 11523 | 163 | info->timeout = g_timeout_add(info->delay, do_signon, account); |
| 11559 | 164 | } else { |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
165 | char *p, *s, *n=NULL ; |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
166 | if (info != NULL) |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
167 | g_hash_table_remove(auto_reconns, account); |
|
11721
c74083492667
[gaim-migrate @ 14012]
Mark Doliner <markdoliner@pidgin.im>
parents:
11638
diff
changeset
|
168 | |
| 15884 | 169 | if (purple_account_get_alias(account)) |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
170 | { |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
171 | n = g_strdup_printf("%s (%s) (%s)", |
| 15884 | 172 | purple_account_get_username(account), |
| 173 | purple_account_get_alias(account), | |
| 174 | purple_account_get_protocol_name(account)); | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
175 | } |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
176 | else |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
177 | { |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
178 | n = g_strdup_printf("%s (%s)", |
| 15884 | 179 | purple_account_get_username(account), |
| 180 | purple_account_get_protocol_name(account)); | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
181 | } |
|
11721
c74083492667
[gaim-migrate @ 14012]
Mark Doliner <markdoliner@pidgin.im>
parents:
11638
diff
changeset
|
182 | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
183 | p = g_strdup_printf(_("%s disconnected"), n); |
|
21155
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
184 | switch (reason) |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
185 | { |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
186 | case PURPLE_REASON_NO_SSL_SUPPORT: |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
187 | s = g_strdup_printf( |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
188 | _("%s\n\n" |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
189 | "%s will not attempt to reconnect the account until you " |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
190 | "re-enable the account. See %s for information on how to " |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
191 | "compile %s with SSL support."), text, PIDGIN_NAME, |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
192 | "http://developer.pidgin.im/wiki/FAQssl", PIDGIN_NAME); |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
193 | break; |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
194 | case PURPLE_REASON_NAME_IN_USE: |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
195 | s = g_strdup_printf( |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
196 | _("%s\n\n" |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
197 | "%s will not attempt to reconnect the account until you " |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
198 | "re-enable it."), text, PIDGIN_NAME); |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
199 | break; |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
200 | default: |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
201 | s = g_strdup_printf( |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
202 | _("%s\n\n" |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
203 | "%s will not attempt to reconnect the account until you " |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
204 | "correct the error and re-enable the account."), text, |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
205 | PIDGIN_NAME); |
|
90fac5772527
Show a snazzy message with a link to the SSL FAQ if the connection died for
Will Thompson <resiak@pidgin.im>
parents:
20853
diff
changeset
|
206 | } |
| 15884 | 207 | purple_notify_error(NULL, NULL, p, s); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
208 | g_free(p); |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
209 | g_free(s); |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
210 | g_free(n); |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
211 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
212 | /* |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
213 | * TODO: Do we really want to disable the account when it's |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
214 | * disconnected by wants_to_die? This happens when you sign |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
215 | * on from somewhere else, or when you enter an invalid password. |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
216 | */ |
| 15884 | 217 | purple_account_set_enabled(account, PIDGIN_UI, FALSE); |
| 7399 | 218 | } |
|
20622
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
219 | |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
220 | /* If we have any open chats, we probably want to rejoin when we get back online. */ |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
221 | list = purple_get_chats(); |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
222 | while (list) { |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
223 | PurpleConversation *conv = list->data; |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
224 | list = list->next; |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
225 | if (conv->account != account || |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
226 | purple_conv_chat_has_left(PURPLE_CONV_CHAT(conv))) |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
227 | continue; |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
228 | purple_conversation_set_data(conv, "want-to-rejoin", GINT_TO_POINTER(TRUE)); |
|
30e148be3e2c
Fix #104 (Reconnect to network should reconnect chats also). This has been
Sadrul Habib Chowdhury <sadrul@pidgin.im>
parents:
20341
diff
changeset
|
229 | } |
| 7399 | 230 | } |
| 231 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
232 | static void pidgin_connection_network_connected () |
| 14758 | 233 | { |
| 15884 | 234 | GList *list = purple_accounts_get_all_active(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
235 | PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); |
| 14767 | 236 | |
| 237 | if(gtkblist) | |
| 15577 | 238 | pidgin_status_box_set_network_available(PIDGIN_STATUS_BOX(gtkblist->statusbox), TRUE); |
| 14767 | 239 | |
| 14758 | 240 | while (list) { |
| 15884 | 241 | PurpleAccount *account = (PurpleAccount*)list->data; |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
242 | g_hash_table_remove(auto_reconns, account); |
| 15884 | 243 | if (purple_account_is_disconnected(account)) |
|
14784
3a82321f46f2
[gaim-migrate @ 17476]
Daniel Atallah <datallah@pidgin.im>
parents:
14767
diff
changeset
|
244 | do_signon(account); |
| 14758 | 245 | list = list->next; |
| 14767 | 246 | } |
| 14758 | 247 | } |
| 248 | ||
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
249 | static void pidgin_connection_network_disconnected () |
| 14758 | 250 | { |
| 15884 | 251 | GList *l = purple_accounts_get_all_active(); |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
252 | PidginBuddyList *gtkblist = pidgin_blist_get_default_gtk_blist(); |
| 15884 | 253 | PurplePluginProtocolInfo *prpl_info = NULL; |
| 254 | PurpleConnection *gc = NULL; | |
| 15090 | 255 | |
| 14767 | 256 | if(gtkblist) |
| 15577 | 257 | pidgin_status_box_set_network_available(PIDGIN_STATUS_BOX(gtkblist->statusbox), FALSE); |
| 14767 | 258 | |
| 14758 | 259 | while (l) { |
| 15884 | 260 | PurpleAccount *a = (PurpleAccount*)l->data; |
| 261 | if (!purple_account_is_disconnected(a)) { | |
| 262 | gc = purple_account_get_connection(a); | |
| 15090 | 263 | if (gc && gc->prpl) |
| 15884 | 264 | prpl_info = PURPLE_PLUGIN_PROTOCOL_INFO(gc->prpl); |
| 15090 | 265 | if (prpl_info) { |
| 266 | if (prpl_info->keepalive) | |
| 267 | prpl_info->keepalive(gc); | |
| 268 | else | |
| 15884 | 269 | purple_account_disconnect(a); |
| 15090 | 270 | } |
| 271 | } | |
| 14758 | 272 | l = l->next; |
| 273 | } | |
| 274 | } | |
| 275 | ||
| 15884 | 276 | static void pidgin_connection_notice(PurpleConnection *gc, const char *text) |
| 14758 | 277 | { } |
| 278 | ||
| 15884 | 279 | static PurpleConnectionUiOps conn_ui_ops = |
| 5717 | 280 | { |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
281 | pidgin_connection_connect_progress, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
282 | pidgin_connection_connected, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
283 | pidgin_connection_disconnected, |
|
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
284 | pidgin_connection_notice, |
|
20433
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
285 | NULL, /* report_disconnect */ |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
286 | pidgin_connection_network_connected, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16263
diff
changeset
|
287 | pidgin_connection_network_disconnected, |
|
20433
786f26a8dc6f
Make pidgin use report_disconnect_reason rather than report_disconnect, and
Will Thompson <resiak@pidgin.im>
parents:
19859
diff
changeset
|
288 | pidgin_connection_report_disconnect_reason, |
|
16752
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16263
diff
changeset
|
289 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16263
diff
changeset
|
290 | NULL, |
|
e6bcb1628c57
Patch from John 'rekkanoryo' Bailey to add the padding struct members in pidgin
Gary Kramlich <grim@reaperworld.com>
parents:
16263
diff
changeset
|
291 | NULL |
| 5717 | 292 | }; |
| 293 | ||
| 15884 | 294 | PurpleConnectionUiOps * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
295 | pidgin_connections_get_ui_ops(void) |
| 5717 | 296 | { |
| 297 | return &conn_ui_ops; | |
| 298 | } | |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
299 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
300 | static void |
| 15884 | 301 | account_removed_cb(PurpleAccount *account, gpointer user_data) |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
302 | { |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
303 | g_hash_table_remove(auto_reconns, account); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
304 | |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
305 | pidgin_blist_update_account_error_state(account, NULL); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
306 | } |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
307 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
308 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
309 | /************************************************************************** |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
310 | * GTK+ connection glue |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
311 | **************************************************************************/ |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
312 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
313 | void * |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
314 | pidgin_connection_get_handle(void) |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
315 | { |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
316 | static int handle; |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
317 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
318 | return &handle; |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
319 | } |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
320 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
321 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
322 | pidgin_connection_init(void) |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
323 | { |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
324 | auto_reconns = g_hash_table_new_full( |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
325 | g_direct_hash, g_direct_equal, |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
326 | NULL, free_auto_recon); |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
327 | |
| 15884 | 328 | purple_signal_connect(purple_accounts_get_handle(), "account-removed", |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
329 | pidgin_connection_get_handle(), |
| 15884 | 330 | PURPLE_CALLBACK(account_removed_cb), NULL); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
331 | } |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
332 | |
|
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
333 | void |
|
15562
8c8249fe5e3c
gaim_gtk to pidgin. I hope
Sean Egan <seanegan@pidgin.im>
parents:
15442
diff
changeset
|
334 | pidgin_connection_uninit(void) |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
335 | { |
| 15884 | 336 | purple_signals_disconnect_by_handle(pidgin_connection_get_handle()); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
337 | |
|
20341
a20de3c1c254
Rename Pidgin's hash table of ongoing autoreconnections to 'auto_reconns'
Will Thompson <resiak@pidgin.im>
parents:
20147
diff
changeset
|
338 | g_hash_table_destroy(auto_reconns); |
|
13014
fa17f785b6fe
[gaim-migrate @ 15367]
Mark Doliner <markdoliner@pidgin.im>
parents:
13013
diff
changeset
|
339 | } |