plugins/autorecon.c

Wed, 30 Jan 2002 13:43:20 +0000

author
Rob Flynn <gaim@robflynn.com>
date
Wed, 30 Jan 2002 13:43:20 +0000
changeset 2946
f55f9952021d
parent 2398
abb1bcee4fdd
child 3630
caa952062dc2
permissions
-rw-r--r--

[gaim-migrate @ 2959]
Oops. =)

99
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
1 #define GAIM_PLUGINS
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
11
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
12 char *name() {
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
13 return "Auto Reconnect";
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
14 }
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
15
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
18 }
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
42 }
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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
eed3f8358586 [gaim-migrate @ 109]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
diff changeset
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 }

mercurial