Sun, 12 Feb 2006 22:14:38 +0000
[gaim-migrate @ 15620]
This is the way we clean the code, clean the code, clean the code
This is the way we clean the code, clean the code, clean the code
So early in the morning
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
1 | /* |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
2 | * Gaim's oscar protocol plugin |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
3 | * This file is the legal property of its developers. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
4 | * Please see the AUTHORS file distributed alongside this file. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
5 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
6 | * This library is free software; you can redistribute it and/or |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
7 | * modify it under the terms of the GNU Lesser General Public |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
8 | * License as published by the Free Software Foundation; either |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
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:
13232
diff
changeset
|
10 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
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:
13232
diff
changeset
|
12 | * but WITHOUT ANY WARRANTY; without even the implied warranty of |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
13 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
14 | * Lesser General Public License for more details. |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
15 | * |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
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:
13232
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:
13232
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:
13232
diff
changeset
|
19 | */ |
|
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
20 | |
| 2086 | 21 | /* |
| 22 | * This file contains the management routines for the receive | |
| 23 | * (incoming packet) queue. The actual packet handlers are in | |
|
8880
15b365a0a7fe
[gaim-migrate @ 9649]
Mark Doliner <markdoliner@pidgin.im>
parents:
8735
diff
changeset
|
24 | * rxhandlers.c. |
| 2086 | 25 | */ |
| 26 | ||
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
27 | #include "oscar.h" |
| 2086 | 28 | |
| 29 | #ifndef _WIN32 | |
| 30 | #include <sys/socket.h> | |
| 31 | #endif | |
| 32 | ||
| 33 | /* | |
| 34 | * | |
| 35 | */ | |
| 36 | faim_internal int aim_recv(int fd, void *buf, size_t count) | |
| 37 | { | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
38 | int left, cur; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
39 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
40 | for (cur = 0, left = count; left; ) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
41 | int ret; |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
42 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
43 | ret = recv(fd, ((unsigned char *)buf)+cur, left, 0); |
|
2808
0127a534662c
[gaim-migrate @ 2821]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
44 | |
|
0127a534662c
[gaim-migrate @ 2821]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
45 | /* Of course EOF is an error, only morons disagree with that. */ |
|
0127a534662c
[gaim-migrate @ 2821]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2706
diff
changeset
|
46 | if (ret <= 0) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
47 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
48 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
49 | cur += ret; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
50 | left -= ret; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
51 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
52 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
53 | return cur; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
54 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
55 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
56 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
57 | * Read into a byte stream. Will not read more than count, but may read |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
58 | * less if there is not enough room in the stream buffer. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
59 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
60 | faim_internal int aim_bstream_recv(ByteStream *bs, int fd, size_t count) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
61 | { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
62 | int red = 0; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
63 | |
|
12427
f30e2b05622c
[gaim-migrate @ 14734]
Richard Laager <rlaager@pidgin.im>
parents:
11253
diff
changeset
|
64 | if (!bs || (fd < 0)) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
65 | return -1; |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
66 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
67 | if (count > (bs->len - bs->offset)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
68 | count = bs->len - bs->offset; /* truncate to remaining space */ |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
69 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
70 | if (count) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
71 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
72 | red = aim_recv(fd, bs->data + bs->offset, count); |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
73 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
74 | if (red <= 0) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
75 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
76 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
77 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
78 | bs->offset += red; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
79 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
80 | return red; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
81 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
82 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
83 | /** |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
84 | * Free an FlapFrame |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
85 | * |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
86 | * @param frame The frame to free. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
87 | * @return -1 on error; 0 on success. |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
88 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
89 | faim_internal void aim_frame_destroy(FlapFrame *frame) |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
90 | { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
91 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
92 | free(frame->data.data); /* XXX aim_bstream_free */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
93 | free(frame); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
94 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
95 | return; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
96 | } |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
97 | |
| 2086 | 98 | /* |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
12427
diff
changeset
|
99 | * Read a FLAP header from conn into fr, and return the number of |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
100 | * bytes in the payload. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
101 | * |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
102 | * @return -1 on error, otherwise return the length of the payload. |
| 2086 | 103 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
104 | static int aim_get_command_flap(OscarSession *sess, OscarConnection *conn, FlapFrame *fr) |
| 2086 | 105 | { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
106 | guint8 hdr_raw[6]; |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
107 | ByteStream hdr; |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
108 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
109 | fr->hdrtype = AIM_FRAMETYPE_FLAP; |
| 2086 | 110 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
111 | /* |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
112 | * Read FLAP header. Six bytes total. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
113 | * |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
114 | * Byte # | Description |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
115 | * -------|------------- |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
116 | * 0x00 | Always 0x2a |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
117 | * 0x01 | Channel number, usually "2." "1" is used during login, |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
118 | * | 4 is used during logoff. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
119 | * 0x02 | Sequence number, 2 bytes. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
120 | * 0x04 | Number of data bytes that follow, 2 bytes. |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
121 | */ |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
122 | aim_bstream_init(&hdr, hdr_raw, sizeof(hdr_raw)); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
123 | if (aim_bstream_recv(&hdr, conn->fd, 6) < 6) { |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
124 | aim_conn_close(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
125 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
126 | } |
| 2086 | 127 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
128 | aim_bstream_rewind(&hdr); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
129 | |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
130 | /* |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
131 | * This shouldn't happen unless the socket breaks, the server breaks, |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
132 | * or we break. We must handle it just in case. |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
133 | */ |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
134 | if (aimbs_get8(&hdr) != 0x2a) { |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
135 | gaim_debug_misc("oscar", "Invalid FLAP frame received on FLAP connection!"); |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
136 | aim_conn_close(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
137 | return -1; |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
138 | } |
| 2086 | 139 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
140 | fr->hdr.flap.channel = aimbs_get8(&hdr); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
141 | fr->hdr.flap.seqnum = aimbs_get16(&hdr); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
142 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
143 | return aimbs_get16(&hdr); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
144 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
145 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
146 | /* |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
147 | * Read a rendezvous header from conn into fr, and return the number of |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
148 | * bytes in the payload. |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
149 | * |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
150 | * @return -1 on error, otherwise return the length of the payload. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
151 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
152 | static int aim_get_command_rendezvous(OscarSession *sess, OscarConnection *conn, FlapFrame *fr) |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
153 | { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
154 | guint8 hdr_raw[8]; |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
155 | ByteStream hdr; |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
156 | |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
157 | fr->hdrtype = AIM_FRAMETYPE_OFT; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
158 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
159 | /* |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
160 | * Read rendezvous header |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
161 | */ |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
162 | aim_bstream_init(&hdr, hdr_raw, sizeof(hdr_raw)); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
163 | if (aim_bstream_recv(&hdr, conn->fd, 8) < 8) { |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
164 | aim_conn_close(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
165 | return -1; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
166 | } |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
167 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
168 | aim_bstream_rewind(&hdr); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
169 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
170 | aimbs_getrawbuf(&hdr, fr->hdr.rend.magic, 4); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
171 | fr->hdr.rend.hdrlen = aimbs_get16(&hdr); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
172 | fr->hdr.rend.type = aimbs_get16(&hdr); |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
173 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
174 | return fr->hdr.rend.hdrlen - 8; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
175 | } |
| 2086 | 176 | |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
177 | /* |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
12427
diff
changeset
|
178 | * Grab a single command sequence off the socket, and enqueue it in |
|
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
12427
diff
changeset
|
179 | * the incoming event queue in a separate struct. |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
180 | * |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
181 | * @return 0 on success, otherwise return the error number. |
|
13232
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
12427
diff
changeset
|
182 | * "Success" doesn't mean we have new data, it just means |
|
149d582e5fbb
[gaim-migrate @ 15596]
Mark Doliner <markdoliner@pidgin.im>
parents:
12427
diff
changeset
|
183 | * the connection isn't dead. |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
184 | */ |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
185 | faim_export int aim_get_command(OscarSession *sess, OscarConnection *conn) |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
186 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
187 | FlapFrame *fr; |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
188 | int payloadlen; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
189 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
190 | if (!sess || !conn) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
3960
diff
changeset
|
191 | return -EINVAL; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
192 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
193 | if (conn->fd == -1) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
194 | return -1; /* it's an aim_conn_close()'d connection */ |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
195 | |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
10271
diff
changeset
|
196 | /* If stdin is closed, then zero becomes a valid fd |
|
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
10271
diff
changeset
|
197 | if (conn->fd < 3) |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
198 | return -1; |
|
11214
253372056e12
[gaim-migrate @ 13346]
Jonathan Clark <ardentlygnarly@users.sourceforge.net>
parents:
10271
diff
changeset
|
199 | */ |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
200 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
201 | if (conn->status & AIM_CONN_STATUS_INPROGRESS) |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
202 | return aim_conn_completeconnect(sess, conn); |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
203 | |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
204 | if (!(fr = (FlapFrame *)calloc(sizeof(FlapFrame), 1))) |
|
4617
35d860860593
[gaim-migrate @ 4908]
Mark Doliner <markdoliner@pidgin.im>
parents:
3960
diff
changeset
|
205 | return -ENOMEM; |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
206 | |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
207 | /* |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
208 | * Rendezvous (client to client) connections do not speak FLAP, so this |
|
3952
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
209 | * function will break on them. |
|
d13e1fde68d8
[gaim-migrate @ 4133]
Mark Doliner <markdoliner@pidgin.im>
parents:
2931
diff
changeset
|
210 | */ |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
211 | if (conn->type == AIM_CONN_TYPE_RENDEZVOUS) |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
212 | payloadlen = aim_get_command_rendezvous(sess, conn, fr); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
213 | else if (conn->type == AIM_CONN_TYPE_LISTENER) { |
|
11253
81cbd43ef85e
[gaim-migrate @ 13422]
Mark Doliner <markdoliner@pidgin.im>
parents:
11214
diff
changeset
|
214 | gaim_debug_misc("oscar", "AIM_CONN_TYPE_LISTENER on fd %d\n", conn->fd); |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
215 | free(fr); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
216 | return -1; |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
217 | } else |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
218 | payloadlen = aim_get_command_flap(sess, conn, fr); |
| 5927 | 219 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
220 | if (payloadlen < 0) { |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
221 | free(fr); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
222 | return -1; |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
223 | } |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
224 | |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
225 | if (payloadlen > 0) { |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
226 | guint8 *payload = NULL; |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
227 | |
|
13235
72bddc689630
[gaim-migrate @ 15600]
Mark Doliner <markdoliner@pidgin.im>
parents:
13232
diff
changeset
|
228 | if (!(payload = (guint8 *) malloc(payloadlen))) { |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
229 | aim_frame_destroy(fr); |
| 5927 | 230 | return -1; |
| 231 | } | |
| 232 | ||
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
233 | aim_bstream_init(&fr->data, payload, payloadlen); |
| 2086 | 234 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
235 | /* read the payload */ |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
236 | if (aim_bstream_recv(&fr->data, conn->fd, payloadlen) < payloadlen) { |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
237 | aim_frame_destroy(fr); /* free's payload */ |
|
13255
b318f395092d
[gaim-migrate @ 15620]
Mark Doliner <markdoliner@pidgin.im>
parents:
13240
diff
changeset
|
238 | aim_conn_close(sess, conn); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
239 | return -1; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
240 | } |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
241 | } else |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
242 | aim_bstream_init(&fr->data, NULL, 0); |
| 2086 | 243 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
244 | aim_bstream_rewind(&fr->data); |
| 2086 | 245 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
246 | fr->conn = conn; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
247 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
248 | /* Enqueue this puppy */ |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
249 | fr->next = NULL; /* this will always be at the bottom */ |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
250 | if (sess->queue_incoming == NULL) |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
251 | sess->queue_incoming = fr; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
252 | else { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
253 | FlapFrame *cur; |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
254 | for (cur = sess->queue_incoming; cur->next; cur = cur->next); |
|
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
255 | cur->next = fr; |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
256 | } |
| 2086 | 257 | |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
258 | fr->conn->lastactivity = time(NULL); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
259 | |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
260 | return 0; |
| 2086 | 261 | } |
| 262 | ||
| 263 | /* | |
|
8735
01248ea222d3
[gaim-migrate @ 9490]
Jonathan Champ <royanee@users.sourceforge.net>
parents:
7806
diff
changeset
|
264 | * Purge receive queue of all handled commands (->handled==1). |
| 2086 | 265 | * |
| 266 | */ | |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
267 | faim_export void aim_purge_rxqueue(OscarSession *sess) |
| 2086 | 268 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
269 | FlapFrame *cur, **prev; |
| 2086 | 270 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
271 | for (prev = &sess->queue_incoming; (cur = *prev); ) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
272 | if (cur->handled) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
273 | *prev = cur->next; |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
274 | aim_frame_destroy(cur); |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
275 | } else |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
276 | prev = &cur->next; |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
277 | } |
| 2086 | 278 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
279 | return; |
| 2086 | 280 | } |
| 281 | ||
| 282 | /* | |
| 283 | * Since aim_get_command will aim_conn_kill dead connections, we need | |
| 284 | * to clean up the rxqueue of unprocessed connections on that socket. | |
| 285 | * | |
| 286 | * XXX: this is something that was handled better in the old connection | |
| 287 | * handling method, but eh. | |
| 288 | */ | |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
289 | faim_internal void aim_rxqueue_cleanbyconn(OscarSession *sess, OscarConnection *conn) |
| 2086 | 290 | { |
|
13240
db5187cc40d1
[gaim-migrate @ 15605]
Mark Doliner <markdoliner@pidgin.im>
parents:
13235
diff
changeset
|
291 | FlapFrame *currx; |
| 2086 | 292 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
293 | for (currx = sess->queue_incoming; currx; currx = currx->next) { |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
294 | if ((!currx->handled) && (currx->conn == conn)) |
|
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
295 | currx->handled = 1; |
|
10267
05279096b8c8
[gaim-migrate @ 11413]
Mark Doliner <markdoliner@pidgin.im>
parents:
8880
diff
changeset
|
296 | } |
|
7806
072628543b7d
[gaim-migrate @ 8453]
Mark Doliner <markdoliner@pidgin.im>
parents:
5927
diff
changeset
|
297 | |
|
2246
8ade8b7421af
[gaim-migrate @ 2256]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2086
diff
changeset
|
298 | return; |
| 2086 | 299 | } |