Wed, 30 Jan 2002 13:43:20 +0000
[gaim-migrate @ 2959]
Oops. =)
| 99 | 1 | #define GAIM_PLUGINS |
| 2 | #include "gaim.h" | |
|
1404
e915b372f70a
[gaim-migrate @ 1414]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1378
diff
changeset
|
3 | #include "prpl.h" |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
4 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
5 | #define INITIAL 8000 |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
6 | #define MAXTIME 1024000 |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
7 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
8 | static GHashTable *hash = NULL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
9 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
10 | static guint tim = 0; |
| 99 | 11 | |
| 12 | char *name() { | |
| 13 | return "Auto Reconnect"; | |
| 14 | } | |
| 15 | ||
| 16 | char *description() { | |
|
1817
67ad2e2348a2
[gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
17 | return "When you are kicked offline, this reconnects you."; |
| 99 | 18 | } |
| 19 | ||
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
20 | static gboolean do_signon(gpointer data) { |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
21 | struct aim_user *u = data; |
|
2398
abb1bcee4fdd
[gaim-migrate @ 2411]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2217
diff
changeset
|
22 | if (g_slist_index(aim_users, u) < 0) |
|
1817
67ad2e2348a2
[gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
23 | return FALSE; |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
24 | serv_login(u); |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
25 | tim = 0; |
|
1817
67ad2e2348a2
[gaim-migrate @ 1827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1404
diff
changeset
|
26 | return FALSE; |
|
1378
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
27 | } |
|
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
28 | |
|
49578635eddb
[gaim-migrate @ 1388]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1165
diff
changeset
|
29 | static void reconnect(struct gaim_connection *gc, void *m) { |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
30 | if (!gc->wants_to_die) { |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
31 | int del; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
32 | del = (int)g_hash_table_lookup(hash, gc->user); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
33 | if (!del) |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
34 | del = INITIAL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
35 | else |
|
2217
791f4d3b3565
[gaim-migrate @ 2227]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2216
diff
changeset
|
36 | del = MAX(2 * del, MAXTIME); |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
37 | tim = g_timeout_add(del, do_signon, gc->user); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
38 | g_hash_table_insert(hash, gc->user, (gpointer)del); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
39 | } else { |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
40 | g_hash_table_remove(hash, gc->user); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
41 | } |
| 99 | 42 | } |
| 43 | ||
|
1047
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1030
diff
changeset
|
44 | char *gaim_plugin_init(GModule *handle) { |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
45 | hash = g_hash_table_new(g_int_hash, g_int_equal); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
46 | |
| 99 | 47 | gaim_signal_connect(handle, event_signoff, reconnect, NULL); |
|
1047
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1030
diff
changeset
|
48 | |
|
783f8520d9a0
[gaim-migrate @ 1057]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1030
diff
changeset
|
49 | return NULL; |
| 99 | 50 | } |
|
2216
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
51 | |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
52 | void gaim_plugin_remove() { |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
53 | if (tim) |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
54 | g_source_remove(tim); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
55 | g_hash_table_destroy(hash); |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
56 | hash = NULL; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
57 | tim = 0; |
|
ae70f10e0d27
[gaim-migrate @ 2226]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1818
diff
changeset
|
58 | } |