Mercurial > pidgin
annotate plugins/autorecon.c @ 4800:4af15fbcb00a
[gaim-migrate @ 5120]
Paco-Paco is cool, he fixed my mess, and then fixed other messes I didn't
even know we had.
committer: Tailor Script <tailor@pidgin.im>
| author | Nathan Walp <nwalp@pidgin.im> |
|---|---|
| date | Sun, 16 Mar 2003 17:49:11 +0000 |
| parents | 3b8e6c2b4a50 |
| children | fefad67de2c7 |
| rev | line source |
|---|---|
|
4202
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
1 #include "config.h" |
|
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
2 |
|
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
3 #ifndef GAIM_PLUGINS |
| 99 | 4 #define GAIM_PLUGINS |
|
4202
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
5 #endif |
|
59751fe608c5
[gaim-migrate @ 4438]
Christian Hammond <chipx86@chipx86.com>
parents:
4113
diff
changeset
|
6 |
| 99 | 7 #include "gaim.h" |
|
1404
96e93119268d
[gaim-migrate @ 1414]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1378
diff
changeset
|
8 #include "prpl.h" |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
9 |
| 3630 | 10 #ifdef _WIN32 |
| 11 #include "win32dep.h" | |
| 12 #endif | |
| 13 | |
|
4494
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
14 G_MODULE_IMPORT GSList *gaim_accounts; |
|
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
15 |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
16 #define INITIAL 8000 |
| 4590 | 17 #define MAXTIME 2048000 |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
18 |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
19 static GHashTable *hash = NULL; |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
20 |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
21 static guint tim = 0; |
| 99 | 22 |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
23 static gboolean do_signon(gpointer data) { |
| 4491 | 24 struct gaim_account *account = data; |
|
4494
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
25 debug_printf("do_signon called\n"); |
|
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
26 |
| 4491 | 27 if (g_slist_index(gaim_accounts, account) < 0) |
|
1817
b367beee6448
[gaim-migrate @ 1827]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1404
diff
changeset
|
28 return FALSE; |
|
4494
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
29 debug_printf("calling serv_login\n"); |
| 4491 | 30 serv_login(account); |
|
4494
b5a50a6a13b0
[gaim-migrate @ 4769]
Herman Bloggs <hermanator12002@yahoo.com>
parents:
4491
diff
changeset
|
31 debug_printf("done calling serv_login\n"); |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
32 tim = 0; |
|
1817
b367beee6448
[gaim-migrate @ 1827]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1404
diff
changeset
|
33 return FALSE; |
|
1378
aedeb1218a0a
[gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1165
diff
changeset
|
34 } |
|
aedeb1218a0a
[gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1165
diff
changeset
|
35 |
|
aedeb1218a0a
[gaim-migrate @ 1388]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1165
diff
changeset
|
36 static void reconnect(struct gaim_connection *gc, void *m) { |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
37 if (!gc->wants_to_die) { |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
38 int del; |
| 4491 | 39 del = (int)g_hash_table_lookup(hash, gc->account); |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
40 if (!del) |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
41 del = INITIAL; |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
42 else |
| 4590 | 43 del = MIN(2 * del, MAXTIME); |
| 4491 | 44 tim = g_timeout_add(del, do_signon, gc->account); |
| 45 g_hash_table_insert(hash, gc->account, (gpointer)del); | |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
46 } else { |
| 4491 | 47 g_hash_table_remove(hash, gc->account); |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
48 } |
| 99 | 49 } |
| 50 | |
| 3630 | 51 /* |
| 52 * EXPORTED FUNCTIONS | |
| 53 */ | |
| 54 | |
| 3802 | 55 struct gaim_plugin_description desc; |
| 56 G_MODULE_EXPORT struct gaim_plugin_description *gaim_plugin_desc() { | |
| 57 desc.api_version = PLUGIN_API_VERSION; | |
| 4585 | 58 desc.name = g_strdup(_("Autoreconnect")); |
| 3802 | 59 desc.version = g_strdup(VERSION); |
| 4113 | 60 desc.description = g_strdup(_("When you are kicked offline, this reconnects you.")); |
| 3802 | 61 desc.authors = g_strdup("Eric Warmenhoven <eric@warmenhoven.org>"); |
| 62 desc.url = g_strdup(WEBSITE); | |
| 63 return &desc; | |
| 64 } | |
| 65 | |
| 3630 | 66 G_MODULE_EXPORT char *name() { |
| 4113 | 67 return _("Auto Reconnect"); |
| 3630 | 68 } |
| 69 | |
| 70 G_MODULE_EXPORT char *description() { | |
| 4113 | 71 return _("When you are kicked offline, this reconnects you."); |
| 3630 | 72 } |
| 73 | |
| 74 G_MODULE_EXPORT char *gaim_plugin_init(GModule *handle) { | |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
75 hash = g_hash_table_new(g_int_hash, g_int_equal); |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
76 |
| 99 | 77 gaim_signal_connect(handle, event_signoff, reconnect, NULL); |
|
1047
ece2d1543b20
[gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
78 |
|
ece2d1543b20
[gaim-migrate @ 1057]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1030
diff
changeset
|
79 return NULL; |
| 99 | 80 } |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
81 |
| 3630 | 82 G_MODULE_EXPORT void gaim_plugin_remove() { |
|
2216
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
83 if (tim) |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
84 g_source_remove(tim); |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
85 g_hash_table_destroy(hash); |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
86 hash = NULL; |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
87 tim = 0; |
|
66783ad29e55
[gaim-migrate @ 2226]
Eric Warmenhoven <eric@warmenhoven.org>
parents:
1818
diff
changeset
|
88 } |
