Sat, 11 Feb 2006 21:45:18 +0000
[gaim-migrate @ 15600]
Massive oscar shuffling. No change in functionality.
I renamed each of the files that contains stuff for a SNAC family.
I started splitting the file transfer/direct connect stuff into
peer.c and peer.h. I stopped using fu8_t, fu16_t and fu32_t and
switched to guint8, guint16 and guint32 instead. I changed the
SNAC family and subtype defines so they are more meaningful.
Added LGPL copyright header to each file. Added myself to the
AUTHORS file.
|
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 | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
30 | /* This is defined in oscar.h, but only when !FAIM_INTERNAL, since the rest of |
|
12414
ae4d1fa82e61
[gaim-migrate @ 14721]
Richard Laager <rlaager@pidgin.im>
parents:
11253
diff
changeset
|
31 | * the library is not allowed to call it. */ |
|
ae4d1fa82e61
[gaim-migrate @ 14721]
Richard Laager <rlaager@pidgin.im>
parents:
11253
diff
changeset
|
32 | faim_export void aim_conn_kill(aim_session_t *sess, aim_conn_t **deadconn); |
|
ae4d1fa82e61
[gaim-migrate @ 14721]
Richard Laager <rlaager@pidgin.im>
parents:
11253
diff
changeset
|
33 | |
| 2086 | 34 | #ifndef _WIN32 |
| 35 | #include <netdb.h> | |
| 36 | #include <sys/socket.h> | |
| 37 | #include <netinet/in.h> | |
|
3717
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
38 | #endif |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
39 | |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
40 | #ifdef _WIN32 |
|
2fc0789e04e8
[gaim-migrate @ 3850]
Herman Bloggs <herman@bluedigits.com>
parents:
3694
diff
changeset
|
41 | #include "win32dep.h" |
| 2086 | 42 | #endif |
| 43 | ||
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
44 | /** |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
45 | * In OSCAR, every connection has a set of SNAC groups associated |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
46 | * with it. These are the groups that you can send over this connection |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
7474
diff
changeset
|
47 | * without being guaranteed a "Not supported" SNAC error. |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
48 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
49 | * The grand theory of things says that these associations transcend |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
50 | * what libfaim calls "connection types" (conn->type). You can probably |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
51 | * see the elegance here, but since I want to revel in it for a bit, you |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
52 | * get to hear it all spelled out. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
53 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
54 | * 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
|
55 | * 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
|
56 | * you. Maybe an IM destined for some twit in Greenland. So you start |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
57 | * at the top of your connection list, looking for a connection that |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
58 | * 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
|
59 | * 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
|
60 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
61 | * 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
|
62 | * 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
|
63 | * 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
|
64 | * 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
|
65 | * 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
|
66 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
67 | * 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
|
68 | * 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
|
69 | * 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
|
70 | * 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
|
71 | * 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
|
72 | * 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
|
73 | * 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
|
74 | * is a message saying that indeed it does support the group you were looking |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
75 | * for. So you continue and send rate confirmation and all that. |
|
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 | * 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
|
78 | * 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
|
79 | * still stuck in the bitter cold. |
|
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 | * 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
|
82 | * future, this may help convince me to implement rate limit mitigation |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
83 | * for real. We'll see. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
84 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
85 | * 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
|
86 | * 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
|
87 | * 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
|
88 | * and probably some client API changes as well. (Whenever I don't want |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
89 | * to do something, I just say it would change the client API. Then I |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
90 | * instantly have a couple of supporters of not doing it.) |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
91 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
92 | * Generally, addgroup is only called by the internal handling of the |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
93 | * 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
|
94 | * 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
|
95 | * 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
|
96 | * about such inane things. |
|
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 | */ |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
99 | faim_internal void aim_conn_addgroup(aim_conn_t *conn, guint16 group) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
100 | { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
101 | aim_conn_inside_t *ins = (aim_conn_inside_t *)conn->inside; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
102 | struct snacgroup *sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
103 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
104 | if (!(sg = malloc(sizeof(struct snacgroup)))) |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
105 | return; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
106 | |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11162
diff
changeset
|
107 | gaim_debug_misc("oscar", "adding group 0x%04x\n", group); |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
108 | sg->group = group; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
109 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
110 | sg->next = ins->groups; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
111 | ins->groups = sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
112 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
113 | return; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
114 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
115 | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
116 | faim_export aim_conn_t *aim_conn_findbygroup(aim_session_t *sess, guint16 group) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
117 | { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
118 | aim_conn_t *cur; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
119 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
120 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
121 | aim_conn_inside_t *ins = (aim_conn_inside_t *)cur->inside; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
122 | struct snacgroup *sg; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
123 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
124 | for (sg = ins->groups; sg; sg = sg->next) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
125 | if (sg->group == group) |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
126 | return cur; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
127 | } |
|
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 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
130 | return NULL; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
131 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
132 | |
| 2675 | 133 | static void connkill_snacgroups(struct snacgroup **head) |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
134 | { |
| 2675 | 135 | struct snacgroup *sg; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
136 | |
| 2675 | 137 | for (sg = *head; sg; ) { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
138 | struct snacgroup *tmp; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
139 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
140 | tmp = sg->next; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
141 | free(sg); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
142 | sg = tmp; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
143 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
144 | |
| 2675 | 145 | *head = NULL; |
| 146 | ||
| 147 | return; | |
| 148 | } | |
| 149 | ||
| 150 | static void connkill_rates(struct rateclass **head) | |
| 151 | { | |
| 152 | struct rateclass *rc; | |
| 153 | ||
| 154 | for (rc = *head; rc; ) { | |
| 155 | struct rateclass *tmp; | |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
156 | struct snacpair *sp; |
| 2675 | 157 | |
| 158 | tmp = rc->next; | |
|
2734
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 | for (sp = rc->members; sp; ) { |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
161 | struct snacpair *tmpsp; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
162 | |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
163 | tmpsp = sp->next; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
164 | free(sp); |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
165 | sp = tmpsp; |
|
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
166 | } |
| 2675 | 167 | free(rc); |
|
2734
83a80077d72a
[gaim-migrate @ 2747]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2703
diff
changeset
|
168 | |
| 2675 | 169 | rc = tmp; |
| 170 | } | |
| 171 | ||
| 172 | *head = NULL; | |
| 173 | ||
| 174 | return; | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
175 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
176 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
177 | static void connkill_real(aim_session_t *sess, aim_conn_t **deadconn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
178 | { |
|
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 | aim_rxqueue_cleanbyconn(sess, *deadconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
181 | aim_tx_cleanqueue(sess, *deadconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
182 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
183 | if ((*deadconn)->fd != -1) |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
184 | aim_conn_close(*deadconn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
185 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
186 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
187 | * This will free ->internal if it necessary... |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
188 | */ |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
4615
diff
changeset
|
189 | if ((*deadconn)->type == AIM_CONN_TYPE_CHAT) |
|
2821
f1ab7f03bdad
[gaim-migrate @ 2834]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2734
diff
changeset
|
190 | aim_conn_kill_chat(sess, *deadconn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
191 | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
192 | if ((*deadconn)->inside) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
193 | aim_conn_inside_t *inside = (aim_conn_inside_t *)(*deadconn)->inside; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
194 | |
| 2675 | 195 | connkill_snacgroups(&inside->groups); |
| 196 | connkill_rates(&inside->rates); | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
197 | |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
198 | free(inside); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
199 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
200 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
201 | free(*deadconn); |
| 3023 | 202 | *deadconn = NULL; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
203 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
204 | return; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
205 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
206 | |
| 2086 | 207 | /** |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
208 | * 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
|
209 | * that we're logging off. This shouldn't really be necessary-- |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
210 | * usually the AIM server will detect that the TCP connection has |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
211 | * been destroyed. |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
212 | */ |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
213 | static int |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
214 | aim_flap_close(aim_session_t *sess, aim_conn_t *conn) |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
215 | { |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
216 | aim_frame_t *fr; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
217 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
218 | if (!sess || !conn) |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
219 | return -EINVAL; |
|
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 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x04, 0))) |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
222 | return -ENOMEM; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
223 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
224 | aim_tx_enqueue(sess, fr); |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
225 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
226 | return 0; |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
227 | } |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
228 | |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
229 | /** |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
230 | * Clears out the connection list, killing remaining connections. |
| 2086 | 231 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
232 | * @param sess Session to be cleared. |
| 2086 | 233 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
234 | static void aim_connrst(aim_session_t *sess) |
| 2086 | 235 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
236 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
237 | if (sess->connlist) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
238 | aim_conn_t *cur = sess->connlist, *tmp; |
| 2086 | 239 | |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
240 | /* Attempt to send the log-off packet */ |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
241 | if (cur->type == AIM_CONN_TYPE_BOS) |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
242 | aim_flap_close(sess, cur); |
|
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
243 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
244 | while (cur) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
245 | tmp = cur->next; |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
246 | aim_conn_close(cur); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
247 | connkill_real(sess, &cur); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
248 | cur = tmp; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
249 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
250 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
251 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
252 | sess->connlist = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
253 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
254 | return; |
| 2086 | 255 | } |
| 256 | ||
| 257 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
258 | * Initializes and/or resets a connection structure to the default values. |
| 2086 | 259 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
260 | * @param deadconn Connection to be reset. |
| 2086 | 261 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
262 | static void aim_conn_init(aim_conn_t *deadconn) |
| 2086 | 263 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
264 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
265 | if (!deadconn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
266 | return; |
| 2086 | 267 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
268 | deadconn->fd = -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
269 | deadconn->subtype = -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
270 | deadconn->type = -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
271 | deadconn->seqnum = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
272 | deadconn->lastactivity = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
273 | deadconn->forcedlatency = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
274 | deadconn->handlerlist = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
275 | deadconn->priv = NULL; |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
276 | memset(deadconn->inside, 0, sizeof(aim_conn_inside_t)); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
277 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
278 | return; |
| 2086 | 279 | } |
| 280 | ||
| 281 | /** | |
| 282 | * Allocate a new empty connection structure. | |
| 283 | * | |
| 8866 | 284 | * @param sess Session |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
285 | * @return Returns the new connection structure. |
| 2086 | 286 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
287 | static aim_conn_t *aim_conn_getnext(aim_session_t *sess) |
| 2086 | 288 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
289 | aim_conn_t *newconn; |
| 2086 | 290 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
291 | if (!(newconn = malloc(sizeof(aim_conn_t)))) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
292 | return NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
293 | memset(newconn, 0, sizeof(aim_conn_t)); |
| 2086 | 294 | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
295 | if (!(newconn->inside = malloc(sizeof(aim_conn_inside_t)))) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
296 | free(newconn); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
297 | return NULL; |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
298 | } |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
299 | memset(newconn->inside, 0, sizeof(aim_conn_inside_t)); |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
300 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
301 | aim_conn_init(newconn); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
302 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
303 | newconn->next = sess->connlist; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
304 | sess->connlist = newconn; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
305 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
306 | return newconn; |
| 2086 | 307 | } |
| 308 | ||
| 309 | /** | |
| 310 | * Close, clear, and free a connection structure. Should never be | |
| 311 | * called from within libfaim. | |
| 312 | * | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
313 | * @param sess Session for the connection. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
314 | * @param deadconn Connection to be freed. |
| 2086 | 315 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
316 | faim_export void aim_conn_kill(aim_session_t *sess, aim_conn_t **deadconn) |
| 2086 | 317 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
318 | aim_conn_t *cur, **prev; |
| 2086 | 319 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
320 | if (!deadconn || !*deadconn) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
321 | return; |
| 2086 | 322 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
323 | for (prev = &sess->connlist; (cur = *prev); ) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
324 | if (cur == *deadconn) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
325 | *prev = cur->next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
326 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
327 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
328 | prev = &cur->next; |
|
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 | if (!cur) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
332 | return; /* oops */ |
| 2086 | 333 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
334 | connkill_real(sess, &cur); |
| 2086 | 335 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
336 | return; |
| 2086 | 337 | } |
| 338 | ||
| 339 | /** | |
| 340 | * Close (but not free) a connection. | |
| 341 | * | |
| 342 | * This leaves everything untouched except for clearing the | |
| 343 | * 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
|
344 | * dead connections). It will also remove cookies if necessary. |
| 2086 | 345 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
346 | * Why only if fd >= 3? Seems rather implementation specific... |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
347 | * 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
|
348 | * |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
349 | * @param deadconn The connection to close. |
| 2086 | 350 | */ |
|
10271
a5e47c867875
[gaim-migrate @ 11420]
Mark Doliner <markdoliner@pidgin.im>
parents:
10267
diff
changeset
|
351 | faim_export void aim_conn_close(aim_conn_t *deadconn) |
| 2086 | 352 | { |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
353 | aim_rxcallback_t userfunc; |
| 2086 | 354 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
355 | if (deadconn->fd >= 0) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
356 | close(deadconn->fd); |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
357 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
358 | deadconn->fd = -1; |
|
5435
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
359 | |
|
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
360 | 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
|
361 | userfunc(deadconn->sessv, NULL, deadconn); |
|
990c340ecb6d
[gaim-migrate @ 5817]
Mark Doliner <markdoliner@pidgin.im>
parents:
5124
diff
changeset
|
362 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
363 | if (deadconn->handlerlist) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
364 | aim_clearhandlers(deadconn); |
| 2086 | 365 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
366 | return; |
| 2086 | 367 | } |
| 368 | ||
| 369 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
370 | * Locates a connection of the specified type in the |
| 8866 | 371 | * specified session. |
| 2086 | 372 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
373 | * 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
|
374 | * aim_conn_findbygroup() should be used instead. |
| 8866 | 375 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
376 | * @param sess The session to search. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
377 | * @param type The type of connection to look for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
378 | * @return Returns the first connection found of the given target type, |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
379 | * or NULL if none could be found. |
| 2086 | 380 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
381 | faim_export aim_conn_t *aim_getconn_type(aim_session_t *sess, int type) |
| 2086 | 382 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
383 | aim_conn_t *cur; |
| 2086 | 384 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
385 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
10035
diff
changeset
|
386 | if ((cur->type == type) && |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
387 | !(cur->status & AIM_CONN_STATUS_INPROGRESS)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
388 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
389 | } |
| 2086 | 390 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
391 | return cur; |
| 2086 | 392 | } |
| 393 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
394 | faim_export aim_conn_t *aim_getconn_type_all(aim_session_t *sess, int type) |
| 2086 | 395 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
396 | aim_conn_t *cur; |
| 2086 | 397 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
398 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
399 | if (cur->type == type) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
400 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
401 | } |
| 2086 | 402 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
403 | return cur; |
| 2086 | 404 | } |
| 405 | ||
| 406 | /* If you pass -1 for the fd, you'll get what you ask for. Gibberish. */ | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
407 | faim_export aim_conn_t *aim_getconn_fd(aim_session_t *sess, int fd) |
| 2086 | 408 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
409 | aim_conn_t *cur; |
| 2086 | 410 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
411 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
412 | if (cur->fd == fd) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
413 | break; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
414 | } |
| 2086 | 415 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
416 | return cur; |
| 2086 | 417 | } |
| 418 | ||
| 419 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
420 | * Clone an aim_conn_t. |
| 2086 | 421 | * |
| 422 | * A new connection is allocated, and the values are filled in | |
| 423 | * appropriately. Note that this function sets the new connnection's | |
| 424 | * ->priv pointer to be equal to that of its parent: only the pointer | |
| 425 | * is copied, not the data it points to. | |
| 426 | * | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
427 | * @param sess The session containing this connection. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
428 | * @param src The connection to clone. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
429 | * @return Returns a pointer to the new aim_conn_t, or %NULL on error. |
| 2086 | 430 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
431 | faim_internal aim_conn_t *aim_cloneconn(aim_session_t *sess, aim_conn_t *src) |
| 2086 | 432 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
433 | aim_conn_t *conn; |
| 2086 | 434 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
435 | if (!(conn = aim_conn_getnext(sess))) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
436 | return NULL; |
| 2086 | 437 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
438 | conn->fd = src->fd; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
439 | conn->type = src->type; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
440 | conn->subtype = src->subtype; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
441 | conn->seqnum = src->seqnum; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
442 | conn->priv = src->priv; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
443 | conn->internal = src->internal; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
444 | conn->lastactivity = src->lastactivity; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
445 | conn->forcedlatency = src->forcedlatency; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
446 | conn->sessv = src->sessv; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
447 | aim_clonehandlers(sess, conn, src); |
| 2086 | 448 | |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
449 | if (src->inside) { |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
450 | /* |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
451 | * XXX should clone this section as well, but since currently |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
452 | * this function only gets called for some of that rendezvous |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
453 | * crap, and not on SNAC connections, its probably okay for |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
454 | * now. |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
455 | * |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
456 | */ |
|
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
457 | } |
| 2086 | 458 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
459 | return conn; |
| 2086 | 460 | } |
| 461 | ||
| 462 | /** | |
| 463 | * Opens a new connection to the specified dest host of specified | |
| 464 | * 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
|
465 | * the connection is allocated and returned, but no connection |
| 2086 | 466 | * is made. |
| 467 | * | |
| 468 | * FIXME: Return errors in a more sane way. | |
| 469 | * | |
| 8866 | 470 | * @param sess Session to create connection in |
| 471 | * @param type Type of connection to create | |
| 2086 | 472 | */ |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
473 | faim_export aim_conn_t *aim_newconn(aim_session_t *sess, int type) |
| 2086 | 474 | { |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
475 | aim_conn_t *conn; |
| 2086 | 476 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
477 | if (!(conn = aim_conn_getnext(sess))) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
478 | return NULL; |
| 2086 | 479 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
480 | conn->sessv = (void *)sess; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
481 | conn->type = type; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
482 | |
|
11162
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
483 | conn->fd = -1; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
484 | conn->status = 0; |
|
9ffb3ec6ce59
[gaim-migrate @ 13263]
Mark Doliner <markdoliner@pidgin.im>
parents:
11154
diff
changeset
|
485 | return conn; |
| 2086 | 486 | } |
| 487 | ||
| 488 | /** | |
| 8866 | 489 | * Searches @sess for the passed connection. |
| 2086 | 490 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
491 | * @param sess Session in which to look. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
492 | * @param conn Connection to look for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
493 | * @return Returns 1 if the passed connection is present, zero otherwise. |
| 2086 | 494 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
495 | faim_export int aim_conn_in_sess(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 496 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
497 | aim_conn_t *cur; |
| 2086 | 498 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
499 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
2270
c65fc356fb68
[gaim-migrate @ 2280]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2246
diff
changeset
|
500 | if (cur == conn) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
501 | return 1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
502 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
503 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
504 | return 0; |
| 2086 | 505 | } |
| 506 | ||
| 507 | /** | |
|
11154
9dbf08b5056d
[gaim-migrate @ 13236]
Mark Doliner <markdoliner@pidgin.im>
parents:
11074
diff
changeset
|
508 | * Set a forced latency value for connection. Basically causes |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
509 | * @newval seconds to be spent between transmits on a connection. |
| 2086 | 510 | * |
| 511 | * 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
|
512 | * limiting. |
| 2086 | 513 | * |
| 514 | * XXX: This should really be replaced with something that scales and | |
| 515 | * backs off like the real rate limiting does. | |
| 516 | * | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
517 | * @param conn Conn to set latency for. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
518 | * @param newval Number of seconds to force between transmits. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
519 | * @return Returns -1 if the connection does not exist, zero otherwise. |
| 2086 | 520 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
521 | faim_export int aim_conn_setlatency(aim_conn_t *conn, int newval) |
| 2086 | 522 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
523 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
524 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
525 | return -1; |
| 2086 | 526 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
527 | conn->forcedlatency = newval; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
528 | conn->lastactivity = 0; /* reset this just to make sure */ |
| 2086 | 529 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
530 | return 0; |
| 2086 | 531 | } |
| 532 | ||
| 533 | /** | |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11162
diff
changeset
|
534 | * Initializes a session structure by setting the initial values |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7045
diff
changeset
|
535 | * stuff in the aim_session_t struct. |
| 2086 | 536 | * |
|
7282
73b94979f76b
[gaim-migrate @ 7861]
Mark Doliner <markdoliner@pidgin.im>
parents:
7045
diff
changeset
|
537 | * @param sess Session to initialize. |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
538 | * @param nonblocking Set to true if you want connections to be non-blocking. |
| 2086 | 539 | */ |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
12414
diff
changeset
|
540 | faim_export void aim_session_init(aim_session_t *sess, guint8 nonblocking) |
| 2086 | 541 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
542 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
543 | if (!sess) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
544 | return; |
| 2086 | 545 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
546 | memset(sess, 0, sizeof(aim_session_t)); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
547 | aim_connrst(sess); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
548 | sess->queue_outgoing = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
549 | sess->queue_incoming = NULL; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
550 | aim_initsnachash(sess); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
551 | sess->msgcookies = NULL; |
|
7285
b9d07d0c9bc2
[gaim-migrate @ 7866]
Mark Doliner <markdoliner@pidgin.im>
parents:
7283
diff
changeset
|
552 | sess->nonblocking = nonblocking; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
553 | sess->modlistv = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
554 | sess->snacid_next = 0x00000001; |
| 2086 | 555 | |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
556 | sess->locate.userinfo = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
557 | sess->locate.torequest = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
558 | sess->locate.requested = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
559 | sess->locate.waiting_for_response = FALSE; |
| 2991 | 560 | sess->ssi.received_data = 0; |
|
4230
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
561 | sess->ssi.numitems = 0; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
562 | sess->ssi.official = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
563 | sess->ssi.local = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
564 | sess->ssi.pending = NULL; |
|
b5393db78439
[gaim-migrate @ 4475]
Mark Doliner <markdoliner@pidgin.im>
parents:
4102
diff
changeset
|
565 | sess->ssi.timestamp = (time_t)0; |
| 2991 | 566 | sess->ssi.waiting_for_ack = 0; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
567 | sess->icq_info = NULL; |
|
4102
06290da3f88d
[gaim-migrate @ 4317]
Mark Doliner <markdoliner@pidgin.im>
parents:
3952
diff
changeset
|
568 | sess->authinfo = NULL; |
|
7466
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
569 | sess->emailinfo = NULL; |
|
1dd3ed07bc24
[gaim-migrate @ 8079]
Mark Doliner <markdoliner@pidgin.im>
parents:
7285
diff
changeset
|
570 | sess->oft_info = NULL; |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3630
diff
changeset
|
571 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
572 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
573 | * This must always be set. Default to the queue-based |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
574 | * version for back-compatibility. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
575 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
576 | aim_tx_setenqueue(sess, AIM_TX_QUEUED, NULL); |
| 2086 | 577 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
578 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
579 | * Register all the modules for this session... |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
580 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
581 | aim__registermodule(sess, misc_modfirst); /* load the catch-all first */ |
|
7474
757569d68123
[gaim-migrate @ 8087]
Mark Doliner <markdoliner@pidgin.im>
parents:
7466
diff
changeset
|
582 | aim__registermodule(sess, service_modfirst); |
| 2672 | 583 | aim__registermodule(sess, locate_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
584 | aim__registermodule(sess, buddylist_modfirst); |
| 2672 | 585 | aim__registermodule(sess, msg_modfirst); |
| 586 | aim__registermodule(sess, adverts_modfirst); | |
| 587 | aim__registermodule(sess, invite_modfirst); | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
588 | aim__registermodule(sess, admin_modfirst); |
| 2672 | 589 | aim__registermodule(sess, popups_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
590 | aim__registermodule(sess, bos_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
591 | aim__registermodule(sess, search_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
592 | aim__registermodule(sess, stats_modfirst); |
| 2672 | 593 | aim__registermodule(sess, translate_modfirst); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
594 | aim__registermodule(sess, chatnav_modfirst); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
595 | aim__registermodule(sess, chat_modfirst); |
|
6879
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
5435
diff
changeset
|
596 | aim__registermodule(sess, odir_modfirst); |
|
cc7abcef355c
[gaim-migrate @ 7425]
Mark Doliner <markdoliner@pidgin.im>
parents:
5435
diff
changeset
|
597 | aim__registermodule(sess, bart_modfirst); |
|
4804
e6e0e6d50d39
[gaim-migrate @ 5124]
Mark Doliner <markdoliner@pidgin.im>
parents:
4624
diff
changeset
|
598 | /* missing 0x11 - 0x12 */ |
| 2672 | 599 | aim__registermodule(sess, ssi_modfirst); |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
600 | /* missing 0x14 */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
3717
diff
changeset
|
601 | 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
|
602 | /* missing 0x16 */ |
| 2672 | 603 | aim__registermodule(sess, auth_modfirst); |
|
3694
49a336931cc6
[gaim-migrate @ 3824]
Mark Doliner <markdoliner@pidgin.im>
parents:
3630
diff
changeset
|
604 | aim__registermodule(sess, email_modfirst); |
| 2086 | 605 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
606 | return; |
| 2086 | 607 | } |
| 608 | ||
| 609 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
610 | * Logoff and deallocate a session. |
| 2086 | 611 | * |
| 8866 | 612 | * @param sess Session to kill |
| 2086 | 613 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
614 | faim_export void aim_session_kill(aim_session_t *sess) |
| 2086 | 615 | { |
|
2635
60897108c74c
[gaim-migrate @ 2648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2270
diff
changeset
|
616 | aim_cleansnacs(sess, -1); |
| 2086 | 617 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
618 | aim_logoff(sess); |
| 2086 | 619 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
620 | aim__shutdownmodules(sess); |
| 2086 | 621 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
622 | return; |
| 2086 | 623 | } |
| 624 | ||
| 625 | /** | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
626 | * Determine if a connection is connecting. |
| 2086 | 627 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
628 | * @param conn Connection to examine. |
| 8866 | 629 | * @return Returns nonzero if the connection is in the process of |
| 630 | * connecting (or if it just completed and | |
| 631 | * aim_conn_completeconnect() has yet to be called on it). | |
| 2086 | 632 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
633 | faim_export int aim_conn_isconnecting(aim_conn_t *conn) |
| 2086 | 634 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
635 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
636 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
637 | return 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
638 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
639 | return !!(conn->status & AIM_CONN_STATUS_INPROGRESS); |
| 2086 | 640 | } |
| 641 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
642 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
643 | * XXX this is nearly as ugly as proxyconnect(). |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
644 | */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
645 | faim_export int aim_conn_completeconnect(aim_session_t *sess, aim_conn_t *conn) |
| 2086 | 646 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
647 | aim_rxcallback_t userfunc; |
| 2086 | 648 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
649 | if (!conn || (conn->fd == -1)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
650 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
651 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
652 | if (!(conn->status & AIM_CONN_STATUS_INPROGRESS)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
653 | return -1; |
| 2086 | 654 | |
|
5124
96cd4ae1204e
[gaim-migrate @ 5487]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
655 | fcntl(conn->fd, F_SETFL, 0); |
|
96cd4ae1204e
[gaim-migrate @ 5487]
Mark Doliner <markdoliner@pidgin.im>
parents:
4830
diff
changeset
|
656 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
657 | conn->status &= ~AIM_CONN_STATUS_INPROGRESS; |
| 2086 | 658 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
659 | 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
|
660 | userfunc(sess, NULL, conn); |
| 2086 | 661 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
662 | /* 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
|
663 | aim_tx_flushqueue(sess); |
| 2086 | 664 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
665 | return 0; |
| 2086 | 666 | } |
| 667 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
668 | faim_export aim_session_t *aim_conn_getsess(aim_conn_t *conn) |
| 2086 | 669 | { |
| 670 | ||
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
671 | if (!conn) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
672 | return NULL; |
| 2086 | 673 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
674 | return (aim_session_t *)conn->sessv; |
| 2086 | 675 | } |
| 676 | ||
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
677 | /** |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
678 | * Close -ALL- open connections. |
| 2086 | 679 | * |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
680 | * @param sess The session. |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
681 | * @return Zero. |
| 2086 | 682 | */ |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
683 | faim_export int aim_logoff(aim_session_t *sess) |
| 2086 | 684 | { |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
685 | aim_connrst(sess); /* in case we want to connect again */ |
| 2086 | 686 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
687 | return 0; |
| 2086 | 688 | } |
| 689 | ||
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
690 | /** |
|
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8866
diff
changeset
|
691 | * 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
|
692 | * sends these _every minute_ to keep the connection alive. |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
693 | */ |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
694 | faim_export int aim_flap_nop(aim_session_t *sess, aim_conn_t *conn) |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
695 | { |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
696 | aim_frame_t *fr; |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
697 | |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
698 | if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x05, 0))) |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
699 | return -ENOMEM; |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
700 | |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
701 | aim_tx_enqueue(sess, fr); |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
702 | |
|
7283
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
703 | /* clean out SNACs over 60sec old */ |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
704 | aim_cleansnacs(sess, 60); |
|
aa76f7c93746
[gaim-migrate @ 7863]
Mark Doliner <markdoliner@pidgin.im>
parents:
7282
diff
changeset
|
705 | |
|
2703
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
706 | return 0; |
|
6111a9790868
[gaim-migrate @ 2716]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2675
diff
changeset
|
707 | } |