Sun, 12 Feb 2006 21:27:04 +0000
[gaim-migrate @ 15619]
More cleaning up of oscar. Renamed some functions to be more clear.
Got rid of some stuff that wasn't used. Inlined some small things
in conn.c that were only used once.
The goals of all this are
1. Non-blocking I/O for all connections
2. p2p stuff won't use the same struct as oscar connections, because
that's stupid
3. The oscar PRPL should be less scary
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
1 | /* |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
2 | * Gaim's oscar protocol plugin |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
3 | * This file is the legal property of its developers. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
4 | * Please see the AUTHORS file distributed alongside this file. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
5 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
6 | * This library is free software; you can redistribute it and/or |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
7 | * modify it under the terms of the GNU Lesser General Public |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
8 | * License as published by the Free Software Foundation; either |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
9 | * version 2 of the License, or (at your option) any later version. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
10 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
11 | * This library is distributed in the hope that it will be useful, |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
14 | * Lesser General Public License for more details. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
15 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
16 | * You should have received a copy of the GNU Lesser General Public |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
17 | * License along with this library; if not, write to the Free Software |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
18 | * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
19 | */ |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
20 | |
|
8888
2e0a3c5d3629
[gaim-migrate @ 9657]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
21 | /** |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
22 | * Low-level connection handling. |
| 2086 | 23 | * |
| 24 | * Does all this gloriously nifty connection handling stuff... | |
| 25 | * | |
| 26 | */ | |
| 27 | ||
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
28 | #include "oscar.h" |
| 2086 | 29 | |
| 30 | #ifndef _WIN32 | |
| 31 | #include <netdb.h> | |
| 32 | #include <sys/socket.h> | |
| 33 | #include <netinet/in.h> | |
|
3717
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
34 | #endif |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
35 | |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
36 | #ifdef _WIN32 |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
37 | #include "win32dep.h" |
| 2086 | 38 | #endif |
| 39 | ||
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
40 | /** |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
41 | * In OSCAR, every connection has a set of SNAC groups associated |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
42 | * with it. These are the groups that you can send over this connection |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
43 | * without being guaranteed a "Not supported" SNAC error. |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
44 | * |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
45 | * The grand theory of things says that these associations transcend |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
46 | * what libfaim calls "connection types" (conn->type). You can probably |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
47 | * see the elegance here, but since I want to revel in it for a bit, you |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
48 | * get to hear it all spelled out. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
49 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
50 | * So let us say that you have your core BOS connection running. One |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
51 | * of your modules has just given you a SNAC of the group 0x0004 to send |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
52 | * you. Maybe an IM destined for some twit in Greenland. So you start |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
53 | * at the top of your connection list, looking for a connection that |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
54 | * claims to support group 0x0004. You find one. Why, that neat BOS |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
55 | * connection of yours can do that. So you send it on its way. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
56 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
57 | * Now, say, that fellow from Greenland has friends and they all want to |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
58 | * meet up with you in a lame chat room. This has landed you a SNAC |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
59 | * in the family 0x000e and you have to admit you're a bit lost. You've |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
60 | * searched your connection list for someone who wants to make your life |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
61 | * easy and deliver this SNAC for you, but there isn't one there. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
62 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
63 | * Here comes the good bit. Without even letting anyone know, particularly |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
7474
diff
changeset
|
64 | * the module that decided to send this SNAC, and definitely not that twit |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
65 | * in Greenland, you send out a service request. In this request, you have |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
66 | * marked the need for a connection supporting group 0x000e. A few seconds |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
67 | * later, you receive a service redirect with an IP address and a cookie in |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
68 | * it. Great, you say. Now I have something to do. Off you go, making |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
69 | * that connection. One of the first things you get from this new server |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
70 | * is a message saying that indeed it does support the group you were looking |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
71 | * for. So you continue and send rate confirmation and all that. |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
72 | * |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
73 | * Then you remember you had that SNAC to send, and now you have a means to |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
74 | * do it, and you do, and everyone is happy. Except the Greenlander, who is |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
75 | * still stuck in the bitter cold. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
76 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
77 | * Oh, and this is useful for building the Migration SNACs, too. In the |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
78 | * future, this may help convince me to implement rate limit mitigation |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
79 | * for real. We'll see. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
80 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
81 | * Just to make me look better, I'll say that I've known about this great |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
82 | * scheme for quite some time now. But I still haven't convinced myself |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
83 | * to make libfaim work that way. It would take a fair amount of effort, |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
84 | * and probably some client API changes as well. (Whenever I don't want |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
85 | * to do something, I just say it would change the client API. Then I |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
86 | * instantly have a couple of supporters of not doing it.) |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
87 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
88 | * Generally, addgroup is only called by the internal handling of the |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
89 | * server ready SNAC. So if you want to do something before that, you'll |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
90 | * have to be more creative. That is done rather early, though, so I don't |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
91 | * think you have to worry about it. Unless you're me. I care deeply |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
92 | * about such inane things. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
93 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
94 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
95 | void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
96 | aim_conn_addgroup(OscarConnection *conn, guint16 group) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
97 | { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
98 | aim_conn_inside_t *ins = (aim_conn_inside_t *)conn->inside; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
99 | struct snacgroup *sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
100 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
101 | sg = malloc(sizeof(struct snacgroup)); |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
102 | |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11162
diff
changeset
|
103 | gaim_debug_misc("oscar", "adding group 0x%04x\n", group); |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
104 | sg->group = group; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
105 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
106 | sg->next = ins->groups; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
107 | ins->groups = sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
108 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
109 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
110 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
111 | aim_conn_findbygroup(OscarSession *sess, guint16 group) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
112 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
113 | OscarConnection *cur; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
114 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
115 | for (cur = sess->connlist; cur; cur = cur->next) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
116 | { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
117 | aim_conn_inside_t *ins = (aim_conn_inside_t *)cur->inside; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
118 | struct snacgroup *sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
119 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
120 | for (sg = ins->groups; sg; sg = sg->next) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
121 | { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
122 | if (sg->group == group) |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
123 | return cur; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
124 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
125 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
126 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
127 | return NULL; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
128 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
129 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
130 | static void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
131 | connkill_snacgroups(struct snacgroup *head) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
132 | { |
| 2675 | 133 | struct snacgroup *sg; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
134 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
135 | for (sg = head; sg; ) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
136 | { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
137 | struct snacgroup *tmp; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
138 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
139 | tmp = sg->next; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
140 | free(sg); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
141 | sg = tmp; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
142 | } |
| 2675 | 143 | } |
| 144 | ||
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
145 | static void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
146 | connkill_rates(struct rateclass *head) |
| 2675 | 147 | { |
| 148 | struct rateclass *rc; | |
| 149 | ||
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
150 | for (rc = head; rc; ) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
151 | { |
| 2675 | 152 | struct rateclass *tmp; |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
153 | struct snacpair *sp; |
| 2675 | 154 | |
| 155 | tmp = rc->next; | |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
156 | |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
157 | for (sp = rc->members; sp; ) { |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
158 | struct snacpair *tmpsp; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
159 | |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
160 | tmpsp = sp->next; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
161 | free(sp); |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
162 | sp = tmpsp; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
163 | } |
| 2675 | 164 | free(rc); |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
165 | |
| 2675 | 166 | rc = tmp; |
| 167 | } | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
168 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
169 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
170 | static void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
171 | connkill_real(OscarSession *sess, OscarConnection *conn) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
172 | { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
173 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
174 | aim_rxqueue_cleanbyconn(sess, conn); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
175 | aim_tx_cleanqueue(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
176 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
177 | if (conn->fd != -1) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
178 | aim_conn_close(conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
179 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
180 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
181 | * This will free ->internal if it necessary... |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
182 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
183 | if (conn->type == AIM_CONN_TYPE_CHAT) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
184 | aim_conn_kill_chat(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
185 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
186 | if (conn->inside) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
187 | { |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
188 | aim_conn_inside_t *inside = (aim_conn_inside_t *)conn->inside; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
189 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
190 | connkill_snacgroups(inside->groups); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
191 | connkill_rates(inside->rates); |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
192 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
193 | free(inside); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
194 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
195 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
196 | gaim_circ_buffer_destroy(conn->buffer_outgoing); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
197 | free(conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
198 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
199 | |
| 2086 | 200 | /** |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
201 | * This sends an empty channel 4 SNAC. This is sent to signify |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
202 | * that we're logging off. This shouldn't really be necessary-- |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
203 | * usually the AIM server will detect that the TCP connection has |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
204 | * been destroyed. |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
205 | */ |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
206 | static int |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
207 | aim_flap_close(OscarSession *sess, OscarConnection *conn) |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
208 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
209 | FlapFrame *fr; |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
210 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
211 | if (!sess || !conn) |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
212 | return -EINVAL; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
213 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
214 | if (!(fr = flap_frame_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x04, 0))) |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
215 | return -ENOMEM; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
216 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
217 | aim_tx_enqueue(sess, fr); |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
218 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
219 | return 0; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
220 | } |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
221 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
222 | /** |
| 2086 | 223 | * Allocate a new empty connection structure. |
| 224 | * | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
225 | * @param sess The oscar session associated with this connection. |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
226 | * @return Returns the new connection structure. |
| 2086 | 227 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
228 | static OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
229 | aim_conn_getnext(OscarSession *sess) |
| 2086 | 230 | { |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
231 | OscarConnection *conn; |
| 2086 | 232 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
233 | conn = g_new0(OscarConnection, 1); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
234 | conn->inside = g_new0(aim_conn_inside_t, 1); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
235 | conn->buffer_outgoing = gaim_circ_buffer_new(-1); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
236 | conn->fd = -1; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
237 | conn->subtype = -1; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
238 | conn->type = -1; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
239 | conn->seqnum = 0; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
240 | conn->lastactivity = 0; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
241 | conn->forcedlatency = 0; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
242 | conn->handlerlist = NULL; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
243 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
244 | conn->next = sess->connlist; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
245 | sess->connlist = conn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
246 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
247 | return conn; |
| 2086 | 248 | } |
| 249 | ||
| 250 | /** | |
| 251 | * Close, clear, and free a connection structure. Should never be | |
| 252 | * called from within libfaim. | |
| 253 | * | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
254 | * @param sess Session for the connection. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
255 | * @param deadconn Connection to be freed. |
| 2086 | 256 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
257 | void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
258 | aim_conn_kill(OscarSession *sess, OscarConnection **deadconn) |
| 2086 | 259 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
260 | OscarConnection *cur, **prev; |
| 2086 | 261 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
262 | if (!deadconn || !*deadconn) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
263 | return; |
| 2086 | 264 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
265 | for (prev = &sess->connlist; (cur = *prev); ) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
266 | if (cur == *deadconn) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
267 | *prev = cur->next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
268 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
269 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
270 | prev = &cur->next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
271 | } |
| 2086 | 272 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
273 | if (!cur) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
274 | return; /* oops */ |
| 2086 | 275 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
276 | connkill_real(sess, cur); |
| 2086 | 277 | } |
| 278 | ||
| 279 | /** | |
| 280 | * Close (but not free) a connection. | |
| 281 | * | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
282 | * This leaves everything untouched except for clearing the |
| 2086 | 283 | * handler list and setting the fd to -1 (used to recognize |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
284 | * dead connections). It will also remove cookies if necessary. |
| 2086 | 285 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
286 | * Why only if fd >= 3? Seems rather implementation specific... |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
287 | * fd's do not have to be distributed in a particular order, do they? |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
288 | * |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
289 | * @param deadconn The connection to close. |
| 2086 | 290 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
291 | void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
292 | aim_conn_close(OscarConnection *deadconn) |
| 2086 | 293 | { |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
294 | aim_rxcallback_t userfunc; |
| 2086 | 295 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
296 | if (deadconn->fd >= 0) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
297 | close(deadconn->fd); |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
298 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
299 | deadconn->fd = -1; |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
300 | |
|
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
301 | if ((userfunc = aim_callhandler(deadconn->sessv, deadconn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNDEAD))) |
|
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
302 | userfunc(deadconn->sessv, NULL, deadconn); |
|
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
303 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
304 | if (deadconn->handlerlist) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
305 | aim_clearhandlers(deadconn); |
| 2086 | 306 | } |
| 307 | ||
| 308 | /** | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
309 | * Locates a connection of the specified type in the |
| 8866 | 310 | * specified session. |
| 2086 | 311 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
312 | * XXX - Except for rendezvous, all uses of this should be removed and |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
313 | * aim_conn_findbygroup() should be used instead. |
| 8866 | 314 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
315 | * @param sess The session to search. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
316 | * @param type The type of connection to look for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
317 | * @return Returns the first connection found of the given target type, |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
318 | * or NULL if none could be found. |
| 2086 | 319 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
320 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
321 | aim_getconn_type(OscarSession *sess, int type) |
| 2086 | 322 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
323 | OscarConnection *cur; |
| 2086 | 324 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
325 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
326 | if ((cur->type == type) && |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
327 | !(cur->status & AIM_CONN_STATUS_INPROGRESS)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
328 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
329 | } |
| 2086 | 330 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
331 | return cur; |
| 2086 | 332 | } |
| 333 | ||
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
334 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
335 | aim_getconn_type_all(OscarSession *sess, int type) |
| 2086 | 336 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
337 | OscarConnection *cur; |
| 2086 | 338 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
339 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
340 | if (cur->type == type) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
341 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
342 | } |
| 2086 | 343 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
344 | return cur; |
| 2086 | 345 | } |
| 346 | ||
| 347 | /* If you pass -1 for the fd, you'll get what you ask for. Gibberish. */ | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
348 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
349 | aim_getconn_fd(OscarSession *sess, int fd) |
| 2086 | 350 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
351 | OscarConnection *cur; |
| 2086 | 352 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
353 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
354 | if (cur->fd == fd) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
355 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
356 | } |
| 2086 | 357 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
358 | return cur; |
| 2086 | 359 | } |
| 360 | ||
| 361 | /** | |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
362 | * Clone an OscarConnection. |
| 2086 | 363 | * |
| 364 | * A new connection is allocated, and the values are filled in | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
365 | * appropriately. |
| 2086 | 366 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
367 | * @param sess The session containing this connection. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
368 | * @param src The connection to clone. |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
369 | * @return Returns a pointer to the new OscarConnection, or %NULL on error. |
| 2086 | 370 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
371 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
372 | aim_cloneconn(OscarSession *sess, OscarConnection *src) |
| 2086 | 373 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
374 | OscarConnection *conn; |
| 2086 | 375 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
376 | if (!(conn = aim_conn_getnext(sess))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
377 | return NULL; |
| 2086 | 378 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
379 | conn->fd = src->fd; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
380 | conn->type = src->type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
381 | conn->subtype = src->subtype; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
382 | conn->seqnum = src->seqnum; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
383 | conn->internal = src->internal; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
384 | conn->lastactivity = src->lastactivity; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
385 | conn->forcedlatency = src->forcedlatency; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
386 | conn->sessv = src->sessv; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
387 | aim_clonehandlers(sess, conn, src); |
| 2086 | 388 | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
389 | if (src->inside) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
390 | /* |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
391 | * XXX should clone this section as well, but since currently |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
392 | * this function only gets called for some of that rendezvous |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
393 | * crap, and not on SNAC connections, its probably okay for |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
394 | * now. |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
395 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
396 | */ |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
397 | } |
| 2086 | 398 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
399 | return conn; |
| 2086 | 400 | } |
| 401 | ||
| 402 | /** | |
| 403 | * Opens a new connection to the specified dest host of specified | |
| 404 | * type, using the proxy settings if available. If @host is %NULL, | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
405 | * the connection is allocated and returned, but no connection |
| 2086 | 406 | * is made. |
| 407 | * | |
| 408 | * FIXME: Return errors in a more sane way. | |
| 409 | * | |
| 8866 | 410 | * @param sess Session to create connection in |
| 411 | * @param type Type of connection to create | |
| 2086 | 412 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
413 | OscarConnection * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
414 | aim_newconn(OscarSession *sess, int type) |
| 2086 | 415 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
416 | OscarConnection *conn; |
| 2086 | 417 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
418 | if (!(conn = aim_conn_getnext(sess))) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
419 | return NULL; |
| 2086 | 420 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
421 | conn->sessv = (void *)sess; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
422 | conn->type = type; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
423 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
424 | conn->fd = -1; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
425 | conn->status = 0; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
426 | return conn; |
| 2086 | 427 | } |
| 428 | ||
| 429 | /** | |
| 8866 | 430 | * Searches @sess for the passed connection. |
| 2086 | 431 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
432 | * @param sess Session in which to look. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
433 | * @param conn Connection to look for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
434 | * @return Returns 1 if the passed connection is present, zero otherwise. |
| 2086 | 435 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
436 | faim_export int aim_conn_in_sess(OscarSession *sess, OscarConnection *conn) |
| 2086 | 437 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
438 | OscarConnection *cur; |
| 2086 | 439 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
440 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
441 | if (cur == conn) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
442 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
443 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
444 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
445 | return 0; |
| 2086 | 446 | } |
| 447 | ||
| 448 | /** | |
|
11154
9dbf08b5056d
[gaim-migrate @ 13236]
Mark Doliner <markdoliner@pidgin.im>
parents:
11074
diff
changeset
|
449 | * Set a forced latency value for connection. Basically causes |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
450 | * @newval seconds to be spent between transmits on a connection. |
| 2086 | 451 | * |
| 452 | * This is my lame attempt at overcoming not understanding the rate | |
|
11154
9dbf08b5056d
[gaim-migrate @ 13236]
Mark Doliner <markdoliner@pidgin.im>
parents:
11074
diff
changeset
|
453 | * limiting. |
| 2086 | 454 | * |
| 455 | * XXX: This should really be replaced with something that scales and | |
| 456 | * backs off like the real rate limiting does. | |
| 457 | * | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
458 | * @param conn Conn to set latency for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
459 | * @param newval Number of seconds to force between transmits. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
460 | * @return Returns -1 if the connection does not exist, zero otherwise. |
| 2086 | 461 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
462 | int |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
463 | aim_conn_setlatency(OscarConnection *conn, int newval) |
| 2086 | 464 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
465 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
466 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
467 | return -1; |
| 2086 | 468 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
469 | conn->forcedlatency = newval; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
470 | conn->lastactivity = 0; /* reset this just to make sure */ |
| 2086 | 471 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
472 | return 0; |
| 2086 | 473 | } |
| 474 | ||
| 475 | /** | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
476 | * Allocates a new OscarSession and initializes it with default values. |
| 2086 | 477 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
478 | OscarSession * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
479 | oscar_session_new(void) |
| 2086 | 480 | { |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
481 | OscarSession *sess; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
482 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
483 | sess = g_new(OscarSession, 1); |
| 2086 | 484 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
485 | sess->queue_outgoing = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
486 | sess->queue_incoming = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
487 | aim_initsnachash(sess); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
488 | sess->msgcookies = NULL; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
489 | sess->modlistv = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
490 | sess->snacid_next = 0x00000001; |
| 2086 | 491 | |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
492 | sess->locate.userinfo = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
493 | sess->locate.torequest = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
494 | sess->locate.requested = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
495 | sess->locate.waiting_for_response = FALSE; |
| 2991 | 496 | sess->ssi.received_data = 0; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
497 | sess->ssi.numitems = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
498 | sess->ssi.official = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
499 | sess->ssi.local = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
500 | sess->ssi.pending = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
501 | sess->ssi.timestamp = (time_t)0; |
| 2991 | 502 | sess->ssi.waiting_for_ack = 0; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
503 | sess->icq_info = NULL; |
|
4102
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
504 | sess->authinfo = NULL; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
505 | sess->emailinfo = NULL; |
|
13253
5ad8373f2d1e
[gaim-migrate @ 15618]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
506 | sess->peer_connections = NULL; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3630
diff
changeset
|
507 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
508 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
509 | * This must always be set. Default to the queue-based |
|
13253
5ad8373f2d1e
[gaim-migrate @ 15618]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
510 | * version for back-compatibility. |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
511 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
512 | aim_tx_setenqueue(sess, AIM_TX_QUEUED, NULL); |
| 2086 | 513 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
514 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
515 | * Register all the modules for this session... |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
516 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
517 | aim__registermodule(sess, misc_modfirst); /* load the catch-all first */ |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7466
diff
changeset
|
518 | aim__registermodule(sess, service_modfirst); |
| 2672 | 519 | aim__registermodule(sess, locate_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
520 | aim__registermodule(sess, buddylist_modfirst); |
| 2672 | 521 | aim__registermodule(sess, msg_modfirst); |
| 522 | aim__registermodule(sess, adverts_modfirst); | |
| 523 | aim__registermodule(sess, invite_modfirst); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
524 | aim__registermodule(sess, admin_modfirst); |
| 2672 | 525 | aim__registermodule(sess, popups_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
526 | aim__registermodule(sess, bos_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
527 | aim__registermodule(sess, search_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
528 | aim__registermodule(sess, stats_modfirst); |
| 2672 | 529 | aim__registermodule(sess, translate_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
530 | aim__registermodule(sess, chatnav_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
531 | aim__registermodule(sess, chat_modfirst); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
5435
diff
changeset
|
532 | aim__registermodule(sess, odir_modfirst); |
|
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
5435
diff
changeset
|
533 | aim__registermodule(sess, bart_modfirst); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
534 | /* missing 0x11 - 0x12 */ |
| 2672 | 535 | aim__registermodule(sess, ssi_modfirst); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
536 | /* missing 0x14 */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3717
diff
changeset
|
537 | aim__registermodule(sess, icq_modfirst); /* XXX - Make sure this isn't sent for AIM */ |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
538 | /* missing 0x16 */ |
| 2672 | 539 | aim__registermodule(sess, auth_modfirst); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3630
diff
changeset
|
540 | aim__registermodule(sess, email_modfirst); |
| 2086 | 541 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
542 | return sess; |
| 2086 | 543 | } |
| 544 | ||
| 545 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
546 | * Logoff and deallocate a session. |
| 2086 | 547 | * |
| 8866 | 548 | * @param sess Session to kill |
| 2086 | 549 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
550 | void |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
551 | oscar_session_destroy(OscarSession *sess) |
| 2086 | 552 | { |
|
2635
60897108c74c
[gaim-migrate @ 2648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2270
diff
changeset
|
553 | aim_cleansnacs(sess, -1); |
| 2086 | 554 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
555 | if (sess->connlist) { |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
556 | OscarConnection *cur = sess->connlist, *tmp; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
557 | |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
558 | /* Attempt to send the log-off packet */ |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
559 | if (cur->type == AIM_CONN_TYPE_BOS) |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
560 | aim_flap_close(sess, cur); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
561 | |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
562 | while (cur) { |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
563 | tmp = cur->next; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
564 | aim_conn_close(cur); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
565 | connkill_real(sess, cur); |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
566 | cur = tmp; |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
567 | } |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
568 | } |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
569 | sess->connlist = NULL; |
| 2086 | 570 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
571 | aim__shutdownmodules(sess); |
| 2086 | 572 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
573 | g_free(sess); |
| 2086 | 574 | } |
| 575 | ||
| 576 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
577 | * Determine if a connection is connecting. |
| 2086 | 578 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
579 | * @param conn Connection to examine. |
| 8866 | 580 | * @return Returns nonzero if the connection is in the process of |
| 581 | * connecting (or if it just completed and | |
| 582 | * aim_conn_completeconnect() has yet to be called on it). | |
| 2086 | 583 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
584 | int |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
585 | aim_conn_isconnecting(OscarConnection *conn) |
| 2086 | 586 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
587 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
588 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
589 | return 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
590 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
591 | return !!(conn->status & AIM_CONN_STATUS_INPROGRESS); |
| 2086 | 592 | } |
| 593 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
594 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
595 | * XXX this is nearly as ugly as proxyconnect(). |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
596 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
597 | int |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
598 | aim_conn_completeconnect(OscarSession *sess, OscarConnection *conn) |
| 2086 | 599 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
600 | aim_rxcallback_t userfunc; |
| 2086 | 601 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
602 | if (!conn || (conn->fd == -1)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
603 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
604 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
605 | if (!(conn->status & AIM_CONN_STATUS_INPROGRESS)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
606 | return -1; |
| 2086 | 607 | |
|
5124
96cd4ae1204e
[gaim-migrate @ 5487]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
608 | fcntl(conn->fd, F_SETFL, 0); |
|
96cd4ae1204e
[gaim-migrate @ 5487]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
609 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
610 | conn->status &= ~AIM_CONN_STATUS_INPROGRESS; |
| 2086 | 611 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
612 | if ((userfunc = aim_callhandler(sess, conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNCOMPLETE))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
613 | userfunc(sess, NULL, conn); |
| 2086 | 614 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
615 | /* Flush out the queues if there was something waiting for this conn */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
616 | aim_tx_flushqueue(sess); |
| 2086 | 617 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
618 | return 0; |
| 2086 | 619 | } |
| 620 | ||
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
621 | OscarSession * |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
622 | aim_conn_getsess(OscarConnection *conn) |
| 2086 | 623 | { |
| 624 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
625 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
626 | return NULL; |
| 2086 | 627 | |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
628 | return (OscarSession *)conn->sessv; |
| 2086 | 629 | } |
| 630 | ||
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
631 | /** |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
632 | * No-op. This sends an empty channel 5 SNAC. WinAIM 4.x and higher |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
633 | * sends these _every minute_ to keep the connection alive. |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
634 | */ |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
635 | int |
|
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
636 | aim_flap_nop(OscarSession *sess, OscarConnection *conn) |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
637 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
638 | FlapFrame *fr; |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
639 | |
|
13254
3fbb3f3efba7
[gaim-migrate @ 15619]
Mark Doliner <markdoliner@pidgin.im>
parents:
13253
diff
changeset
|
640 | if (!(fr = flap_frame_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x05, 0))) |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
641 | return -ENOMEM; |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
642 | |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
643 | aim_tx_enqueue(sess, fr); |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
644 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
645 | /* clean out SNACs over 60sec old */ |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
646 | aim_cleansnacs(sess, 60); |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
647 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
648 | return 0; |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
649 | } |