Fri, 01 Dec 2000 23:01:36 +0000
[gaim-migrate @ 1194]
libfaim updates.
| 2 | 1 | |
| 2 | /* | |
| 3 | * aim_conn.c | |
| 4 | * | |
| 5 | * Does all this gloriously nifty connection handling stuff... | |
| 6 | * | |
| 7 | */ | |
| 8 | ||
|
283
dbf3342692e9
[gaim-migrate @ 293]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
281
diff
changeset
|
9 | #include <faim/aim.h> |
| 2 | 10 | |
|
889
070eb1c6db95
[gaim-migrate @ 899]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
840
diff
changeset
|
11 | #ifndef _WIN32 |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
12 | #include <netdb.h> |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
13 | #include <sys/socket.h> |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
14 | #include <netinet/in.h> |
|
889
070eb1c6db95
[gaim-migrate @ 899]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
840
diff
changeset
|
15 | #endif |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
16 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
17 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
18 | * aim_connrst - Clears out connection list, killing remaining connections. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
19 | * @sess: Session to be cleared |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
20 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
21 | * Clears out the connection list and kills any connections left. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
22 | * |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
23 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
24 | faim_internal void aim_connrst(struct aim_session_t *sess) |
| 2 | 25 | { |
|
715
96292ef864c9
[gaim-migrate @ 725]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
711
diff
changeset
|
26 | faim_mutex_init(&sess->connlistlock); |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
27 | if (sess->connlist) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
28 | struct aim_conn_t *cur = sess->connlist, *tmp; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
29 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
30 | while(cur) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
31 | tmp = cur->next; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
32 | aim_conn_close(cur); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
33 | free(cur); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
34 | cur = tmp; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
35 | } |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
36 | } |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
37 | sess->connlist = NULL; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
38 | return; |
| 2 | 39 | } |
| 40 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
41 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
42 | * aim_conn_init - Reset a connection to default values. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
43 | * @deadconn: Connection to be reset |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
44 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
45 | * Initializes and/or resets a connection structure. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
46 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
47 | */ |
|
638
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
48 | static void aim_conn_init(struct aim_conn_t *deadconn) |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
49 | { |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
50 | if (!deadconn) |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
51 | return; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
52 | |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
53 | deadconn->fd = -1; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
54 | deadconn->subtype = -1; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
55 | deadconn->type = -1; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
56 | deadconn->seqnum = 0; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
57 | deadconn->lastactivity = 0; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
58 | deadconn->forcedlatency = 0; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
59 | deadconn->handlerlist = NULL; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
60 | deadconn->priv = NULL; |
|
715
96292ef864c9
[gaim-migrate @ 725]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
711
diff
changeset
|
61 | faim_mutex_init(&deadconn->active); |
|
96292ef864c9
[gaim-migrate @ 725]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
711
diff
changeset
|
62 | faim_mutex_init(&deadconn->seqnum_lock); |
|
638
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
63 | |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
64 | return; |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
65 | } |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
66 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
67 | /** |
|
1184
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
68 | * aim_conn_getnext - Gets a new connection structure. |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
69 | * @sess: Session |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
70 | * |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
71 | * Allocate a new empty connection structure. |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
72 | * |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
73 | */ |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
74 | faim_internal struct aim_conn_t *aim_conn_getnext(struct aim_session_t *sess) |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
75 | { |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
76 | struct aim_conn_t *newconn, *cur; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
77 | |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
78 | if (!(newconn = malloc(sizeof(struct aim_conn_t)))) |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
79 | return NULL; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
80 | |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
81 | memset(newconn, 0, sizeof(struct aim_conn_t)); |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
82 | aim_conn_init(newconn); |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
83 | newconn->next = NULL; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
84 | |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
85 | faim_mutex_lock(&sess->connlistlock); |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
86 | if (sess->connlist == NULL) |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
87 | sess->connlist = newconn; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
88 | else { |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
89 | for (cur = sess->connlist; cur->next; cur = cur->next) |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
90 | ; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
91 | cur->next = newconn; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
92 | } |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
93 | faim_mutex_unlock(&sess->connlistlock); |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
94 | |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
95 | return newconn; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
96 | } |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
97 | |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
98 | /** |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
99 | * aim_conn_kill - Close and free a connection. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
100 | * @sess: Session for the connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
101 | * @deadconn: Connection to be freed |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
102 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
103 | * Close, clear, and free a connection structure. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
104 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
105 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
106 | faim_export void aim_conn_kill(struct aim_session_t *sess, struct aim_conn_t **deadconn) |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
107 | { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
108 | struct aim_conn_t *cur; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
109 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
110 | if (!deadconn || !*deadconn) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
111 | return; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
112 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
113 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
114 | if (sess->connlist == NULL) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
115 | ; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
116 | else if (sess->connlist->next == NULL) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
117 | if (sess->connlist == *deadconn) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
118 | sess->connlist = NULL; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
119 | } else { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
120 | cur = sess->connlist; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
121 | while (cur->next) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
122 | if (cur->next == *deadconn) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
123 | cur->next = cur->next->next; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
124 | break; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
125 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
126 | cur = cur->next; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
127 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
128 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
129 | faim_mutex_unlock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
130 | |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
338
diff
changeset
|
131 | /* XXX: do we need this for txqueue too? */ |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
338
diff
changeset
|
132 | aim_rxqueue_cleanbyconn(sess, *deadconn); |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
338
diff
changeset
|
133 | |
|
1184
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
134 | if ((*deadconn)->fd != -1) |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
135 | aim_conn_close(*deadconn); |
|
711
5b891ffb999a
[gaim-migrate @ 721]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
707
diff
changeset
|
136 | if ((*deadconn)->priv) |
|
5b891ffb999a
[gaim-migrate @ 721]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
707
diff
changeset
|
137 | free((*deadconn)->priv); |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
138 | free(*deadconn); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
139 | deadconn = NULL; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
140 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
141 | return; |
| 2 | 142 | } |
| 143 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
144 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
145 | * aim_conn_close - Close a connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
146 | * @deadconn: Connection to close |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
147 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
148 | * Close (but not free) a connection. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
149 | * |
|
1184
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
150 | * This leaves everything untouched except for clearing the |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
151 | * handler list and setting the fd to -1 (used to recognize |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
152 | * dead connections). |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
153 | * |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
154 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
155 | faim_export void aim_conn_close(struct aim_conn_t *deadconn) |
| 2 | 156 | { |
|
638
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
157 | |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
158 | faim_mutex_destroy(&deadconn->active); |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
159 | faim_mutex_destroy(&deadconn->seqnum_lock); |
| 2 | 160 | if (deadconn->fd >= 3) |
| 161 | close(deadconn->fd); | |
|
1184
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
162 | deadconn->fd = -1; |
|
283
dbf3342692e9
[gaim-migrate @ 293]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
281
diff
changeset
|
163 | if (deadconn->handlerlist) |
|
dbf3342692e9
[gaim-migrate @ 293]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
281
diff
changeset
|
164 | aim_clearhandlers(deadconn); |
|
638
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
165 | |
|
9bbe607c0523
[gaim-migrate @ 648]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
445
diff
changeset
|
166 | return; |
| 2 | 167 | } |
| 168 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
169 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
170 | * aim_getconn_type - Find a connection of a specific type |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
171 | * @sess: Session to search |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
172 | * @type: Type of connection to look for |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
173 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
174 | * Searches for a connection of the specified type in the |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
175 | * specified session. Returns the first connection of that |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
176 | * type found. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
177 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
178 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
179 | faim_internal struct aim_conn_t *aim_getconn_type(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
180 | int type) |
| 2 | 181 | { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
182 | struct aim_conn_t *cur; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
183 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
184 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
185 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
186 | if ((cur->type == type) && !(cur->status & AIM_CONN_STATUS_INPROGRESS)) |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
187 | break; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
188 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
189 | faim_mutex_unlock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
190 | return cur; |
| 2 | 191 | } |
| 192 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
193 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
194 | * aim_proxyconnect - An extrememly quick and dirty SOCKS5 interface. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
195 | * @sess: Session to connect |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
196 | * @host: Host to connect to |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
197 | * @port: Port to connect to |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
198 | * @statusret: Return value of the connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
199 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
200 | * Attempts to connect to the specified host via the configured |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
201 | * proxy settings, if present. If no proxy is configured for |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
202 | * this session, the connection is done directly. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
203 | * |
| 935 | 204 | */ |
| 205 | static int aim_proxyconnect(struct aim_session_t *sess, | |
| 206 | char *host, unsigned short port, | |
| 207 | int *statusret) | |
| 208 | { | |
| 209 | int fd = -1; | |
| 210 | ||
| 211 | if (strlen(sess->socksproxy.server)) { /* connecting via proxy */ | |
| 212 | int i; | |
| 213 | unsigned char buf[512]; | |
| 214 | struct sockaddr_in sa; | |
| 215 | struct hostent *hp; | |
| 216 | char *proxy; | |
| 217 | unsigned short proxyport = 1080; | |
| 218 | ||
| 219 | for(i=0;i<(int)strlen(sess->socksproxy.server);i++) { | |
| 220 | if (sess->socksproxy.server[i] == ':') { | |
| 221 | proxyport = atoi(&(sess->socksproxy.server[i+1])); | |
| 222 | break; | |
| 223 | } | |
| 224 | } | |
| 225 | proxy = (char *)malloc(i+1); | |
| 226 | strncpy(proxy, sess->socksproxy.server, i); | |
| 227 | proxy[i] = '\0'; | |
| 228 | ||
| 229 | if (!(hp = gethostbyname(proxy))) { | |
| 230 | printf("proxyconnect: unable to resolve proxy name\n"); | |
| 231 | *statusret = (h_errno | AIM_CONN_STATUS_RESOLVERR); | |
| 232 | return -1; | |
| 233 | } | |
| 234 | free(proxy); | |
| 235 | ||
| 236 | memset(&sa.sin_zero, 0, 8); | |
| 237 | sa.sin_port = htons(proxyport); | |
| 238 | memcpy(&sa.sin_addr, hp->h_addr, hp->h_length); | |
| 239 | sa.sin_family = hp->h_addrtype; | |
| 240 | ||
| 241 | fd = socket(hp->h_addrtype, SOCK_STREAM, 0); | |
| 242 | if (connect(fd, (struct sockaddr *)&sa, sizeof(struct sockaddr_in)) < 0) { | |
| 243 | printf("proxyconnect: unable to connect to proxy\n"); | |
| 244 | close(fd); | |
| 245 | return -1; | |
| 246 | } | |
| 247 | ||
| 248 | i = 0; | |
| 249 | buf[0] = 0x05; /* SOCKS version 5 */ | |
| 250 | if (strlen(sess->socksproxy.username)) { | |
| 251 | buf[1] = 0x02; /* two methods */ | |
| 252 | buf[2] = 0x00; /* no authentication */ | |
| 253 | buf[3] = 0x02; /* username/password authentication */ | |
| 254 | i = 4; | |
| 255 | } else { | |
| 256 | buf[1] = 0x01; | |
| 257 | buf[2] = 0x00; | |
| 258 | i = 3; | |
| 259 | } | |
| 260 | ||
| 261 | if (write(fd, buf, i) < i) { | |
| 262 | *statusret = errno; | |
| 263 | close(fd); | |
| 264 | return -1; | |
| 265 | } | |
| 266 | ||
| 267 | if (read(fd, buf, 2) < 2) { | |
| 268 | *statusret = errno; | |
| 269 | close(fd); | |
| 270 | return -1; | |
| 271 | } | |
| 272 | ||
| 273 | if ((buf[0] != 0x05) || (buf[1] == 0xff)) { | |
| 274 | *statusret = EINVAL; | |
| 275 | close(fd); | |
| 276 | return -1; | |
| 277 | } | |
| 278 | ||
| 279 | /* check if we're doing username authentication */ | |
| 280 | if (buf[1] == 0x02) { | |
| 281 | i = aimutil_put8(buf, 0x01); /* version 1 */ | |
| 282 | i += aimutil_put8(buf+i, strlen(sess->socksproxy.username)); | |
| 283 | i += aimutil_putstr(buf+i, sess->socksproxy.username, strlen(sess->socksproxy.username)); | |
| 284 | i += aimutil_put8(buf+i, strlen(sess->socksproxy.password)); | |
| 285 | i += aimutil_putstr(buf+i, sess->socksproxy.password, strlen(sess->socksproxy.password)); | |
| 286 | if (write(fd, buf, i) < i) { | |
| 287 | *statusret = errno; | |
| 288 | close(fd); | |
| 289 | return -1; | |
| 290 | } | |
| 291 | if (read(fd, buf, 2) < 2) { | |
| 292 | *statusret = errno; | |
| 293 | close(fd); | |
| 294 | return -1; | |
| 295 | } | |
| 296 | if ((buf[0] != 0x01) || (buf[1] != 0x00)) { | |
| 297 | *statusret = EINVAL; | |
| 298 | close(fd); | |
| 299 | return -1; | |
| 300 | } | |
| 301 | } | |
| 302 | ||
| 303 | i = aimutil_put8(buf, 0x05); | |
| 304 | i += aimutil_put8(buf+i, 0x01); /* CONNECT */ | |
| 305 | i += aimutil_put8(buf+i, 0x00); /* reserved */ | |
| 306 | i += aimutil_put8(buf+i, 0x03); /* address type: host name */ | |
| 307 | i += aimutil_put8(buf+i, strlen(host)); | |
| 308 | i += aimutil_putstr(buf+i, host, strlen(host)); | |
| 309 | i += aimutil_put16(buf+i, port); | |
| 310 | ||
| 311 | if (write(fd, buf, i) < i) { | |
| 312 | *statusret = errno; | |
| 313 | close(fd); | |
| 314 | return -1; | |
| 315 | } | |
| 316 | if (read(fd, buf, 10) < 10) { | |
| 317 | *statusret = errno; | |
| 318 | close(fd); | |
| 319 | return -1; | |
| 320 | } | |
| 321 | if ((buf[0] != 0x05) || (buf[1] != 0x00)) { | |
| 322 | *statusret = EINVAL; | |
| 323 | close(fd); | |
| 324 | return -1; | |
| 325 | } | |
| 326 | ||
| 327 | } else { /* connecting directly */ | |
| 328 | struct sockaddr_in sa; | |
| 329 | struct hostent *hp; | |
| 330 | ||
| 331 | if (!(hp = gethostbyname(host))) { | |
| 332 | *statusret = (h_errno | AIM_CONN_STATUS_RESOLVERR); | |
| 333 | return -1; | |
| 334 | } | |
| 335 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
336 | memset(&sa, 0, sizeof(struct sockaddr_in)); |
| 935 | 337 | sa.sin_port = htons(port); |
| 338 | memcpy(&sa.sin_addr, hp->h_addr, hp->h_length); | |
| 339 | sa.sin_family = hp->h_addrtype; | |
| 340 | ||
| 341 | fd = socket(hp->h_addrtype, SOCK_STREAM, 0); | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
342 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
343 | if (sess->flags & AIM_SESS_FLAGS_NONBLOCKCONNECT) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
344 | fcntl(fd, F_SETFL, O_NONBLOCK); /* XXX save flags */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
345 | |
| 935 | 346 | if (connect(fd, (struct sockaddr *)&sa, sizeof(struct sockaddr_in)) < 0) { |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
347 | if (sess->flags & AIM_SESS_FLAGS_NONBLOCKCONNECT) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
348 | if ((errno == EINPROGRESS) || (errno == EINTR)) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
349 | if (statusret) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
350 | *statusret |= AIM_CONN_STATUS_INPROGRESS; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
351 | return fd; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
352 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
353 | } |
| 935 | 354 | close(fd); |
| 355 | fd = -1; | |
| 356 | } | |
| 357 | } | |
| 358 | return fd; | |
| 359 | } | |
| 360 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
361 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
362 | * aim_newconn - Open a new connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
363 | * @sess: Session to create connection in |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
364 | * @type: Type of connection to create |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
365 | * @dest: Host to connect to (in "host:port" syntax) |
| 2 | 366 | * |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
367 | * Opens a new connection to the specified dest host of specified |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
368 | * type, using the proxy settings if available. If @host is %NULL, |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
369 | * the connection is allocated and returned, but no connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
370 | * is made. |
| 2 | 371 | * |
| 372 | * FIXME: Return errors in a more sane way. | |
| 373 | * | |
| 374 | */ | |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
375 | faim_export struct aim_conn_t *aim_newconn(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
376 | int type, char *dest) |
| 2 | 377 | { |
| 378 | struct aim_conn_t *connstruct; | |
| 379 | int ret; | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
380 | u_short port = FAIM_LOGIN_PORT; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
381 | char *host = NULL; |
| 2 | 382 | int i=0; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
383 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
384 | if ((connstruct=aim_conn_getnext(sess))==NULL) |
| 2 | 385 | return NULL; |
| 386 | ||
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
387 | faim_mutex_lock(&connstruct->active); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
388 | |
| 2 | 389 | connstruct->type = type; |
| 390 | ||
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
391 | if (!dest) { /* just allocate a struct */ |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
392 | connstruct->fd = -1; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
393 | connstruct->status = 0; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
394 | faim_mutex_unlock(&connstruct->active); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
395 | return connstruct; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
396 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
397 | |
| 2 | 398 | /* |
| 399 | * As of 23 Jul 1999, AOL now sends the port number, preceded by a | |
| 400 | * colon, in the BOS redirect. This fatally breaks all previous | |
| 401 | * libfaims. Bad, bad AOL. | |
| 402 | * | |
| 403 | * We put this here to catch every case. | |
| 404 | * | |
| 405 | */ | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
406 | |
|
889
070eb1c6db95
[gaim-migrate @ 899]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
840
diff
changeset
|
407 | for(i=0;i<(int)strlen(dest);i++) { |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
408 | if (dest[i] == ':') { |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
409 | port = atoi(&(dest[i+1])); |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
410 | break; |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
411 | } |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
412 | } |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
413 | host = (char *)malloc(i+1); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
414 | strncpy(host, dest, i); |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
415 | host[i] = '\0'; |
| 2 | 416 | |
| 935 | 417 | if ((ret = aim_proxyconnect(sess, host, port, &connstruct->status)) < 0) { |
| 418 | connstruct->fd = -1; | |
| 419 | connstruct->status = (errno | AIM_CONN_STATUS_CONNERR); | |
| 420 | free(host); | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
421 | faim_mutex_unlock(&connstruct->active); |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
422 | return connstruct; |
| 935 | 423 | } else |
| 424 | connstruct->fd = ret; | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
425 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
426 | faim_mutex_unlock(&connstruct->active); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
427 | |
| 935 | 428 | free(host); |
| 429 | ||
| 2 | 430 | return connstruct; |
| 431 | } | |
| 432 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
433 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
434 | * aim_conngetmaxfd - Return the highest valued file discriptor in session |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
435 | * @sess: Session to search |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
436 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
437 | * Returns the highest valued filed descriptor of all open |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
438 | * connections in @sess. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
439 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
440 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
441 | faim_export int aim_conngetmaxfd(struct aim_session_t *sess) |
| 2 | 442 | { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
443 | int j = 0; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
444 | struct aim_conn_t *cur; |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
445 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
446 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
447 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
448 | if (cur->fd > j) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
449 | j = cur->fd; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
450 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
451 | faim_mutex_unlock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
452 | |
| 2 | 453 | return j; |
| 454 | } | |
| 455 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
456 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
457 | * aim_countconn - Return the number of open connections in the session |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
458 | * @sess: Session to look at |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
459 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
460 | * Returns the number of number connections in @sess. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
461 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
462 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
463 | static int aim_countconn(struct aim_session_t *sess) |
| 2 | 464 | { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
465 | int cnt = 0; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
466 | struct aim_conn_t *cur; |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
467 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
468 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
469 | for (cur = sess->connlist; cur; cur = cur->next) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
470 | cnt++; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
471 | faim_mutex_unlock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
472 | |
| 2 | 473 | return cnt; |
| 474 | } | |
| 475 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
476 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
477 | * aim_conn_in_sess - Predicate to test the precense of a connection in a sess |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
478 | * @sess: Session to look in |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
479 | * @conn: Connection to look for |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
480 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
481 | * Searches @sess for the passed connection. Returns 1 if its present, |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
482 | * zero otherwise. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
483 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
484 | */ |
|
1002
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
485 | faim_export int aim_conn_in_sess(struct aim_session_t *sess, struct aim_conn_t *conn) |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
486 | { |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
487 | struct aim_conn_t *cur; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
488 | |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
489 | faim_mutex_lock(&sess->connlistlock); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
490 | for(cur = sess->connlist; cur; cur = cur->next) |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
491 | if(cur == conn) { |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
492 | faim_mutex_unlock(&sess->connlistlock); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
493 | return 1; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
494 | } |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
495 | faim_mutex_unlock(&sess->connlistlock); |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
496 | return 0; |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
497 | } |
|
0c559888b1fb
[gaim-migrate @ 1012]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
935
diff
changeset
|
498 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
499 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
500 | * aim_select - Wait for a socket with data or timeout |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
501 | * @sess: Session to wait on |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
502 | * @timeout: How long to wait |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
503 | * @status: Return status |
| 2 | 504 | * |
| 505 | * Waits for a socket with data or for timeout, whichever comes first. | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
506 | * See select(). |
| 2 | 507 | * |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
508 | * Return codes in *status: |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
509 | * -1 error in select() (%NULL returned) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
510 | * 0 no events pending (%NULL returned) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
511 | * 1 outgoing data pending (%NULL returned) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
512 | * 2 incoming data pending (connection with pending data returned) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
513 | * |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
514 | * XXX: we could probably stand to do a little courser locking here. |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
515 | * |
| 2 | 516 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
517 | faim_export struct aim_conn_t *aim_select(struct aim_session_t *sess, |
|
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
518 | struct timeval *timeout, int *status) |
| 2 | 519 | { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
520 | struct aim_conn_t *cur; |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
521 | fd_set fds, wfds; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
522 | int maxfd = 0; |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
523 | int i, haveconnecting = 0; |
| 2 | 524 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
525 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
526 | if (sess->connlist == NULL) { |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
527 | faim_mutex_unlock(&sess->connlistlock); |
|
445
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
338
diff
changeset
|
528 | *status = -1; |
|
f7ef3b61a842
[gaim-migrate @ 455]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
338
diff
changeset
|
529 | return NULL; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
530 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
531 | faim_mutex_unlock(&sess->connlistlock); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
532 | |
| 2 | 533 | FD_ZERO(&fds); |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
534 | FD_ZERO(&wfds); |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
535 | maxfd = 0; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
536 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
537 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
538 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
1184
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
539 | if (cur->fd == -1) { |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
540 | /* don't let invalid/dead connections sit around */ |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
541 | *status = 2; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
542 | faim_mutex_unlock(&sess->connlistlock); |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
543 | return cur; |
|
e475cddf904d
[gaim-migrate @ 1194]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1081
diff
changeset
|
544 | } else if (cur->status & AIM_CONN_STATUS_INPROGRESS) { |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
545 | FD_SET(cur->fd, &wfds); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
546 | haveconnecting++; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
547 | } |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
548 | FD_SET(cur->fd, &fds); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
549 | if (cur->fd > maxfd) |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
550 | maxfd = cur->fd; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
551 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
552 | faim_mutex_unlock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
553 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
554 | /* |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
555 | * If we have data waiting to be sent, return |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
556 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
557 | * We have to not do this if theres at least one |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
558 | * connection thats still connecting, since that connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
559 | * may have queued data and this return would prevent |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
560 | * the connection from ever completing! This is a major |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
561 | * inadequacy of the libfaim way of doing things. It means |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
562 | * that nothing can transmit as long as there's connecting |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
563 | * sockets. Evil. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
564 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
565 | * But its still better than having blocking connects. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
566 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
567 | */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
568 | if (!haveconnecting && (sess->queue_outgoing != NULL)) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
569 | *status = 1; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
570 | return NULL; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
571 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
572 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
573 | if ((i = select(maxfd+1, &fds, &wfds, NULL, timeout))>=1) { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
574 | faim_mutex_lock(&sess->connlistlock); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
575 | for (cur = sess->connlist; cur; cur = cur->next) { |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
576 | if ((FD_ISSET(cur->fd, &fds)) || |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
577 | ((cur->status & AIM_CONN_STATUS_INPROGRESS) && |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
578 | FD_ISSET(cur->fd, &wfds))) { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
579 | *status = 2; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
580 | faim_mutex_unlock(&sess->connlistlock); |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
581 | return cur; /* XXX race condition here -- shouldnt unlock connlist */ |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
582 | } |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
583 | } |
|
817
b672b0dac57b
[gaim-migrate @ 827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
715
diff
changeset
|
584 | *status = 0; /* shouldn't happen */ |
|
b672b0dac57b
[gaim-migrate @ 827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
715
diff
changeset
|
585 | } else if ((i == -1) && (errno == EINTR)) /* treat interrupts as a timeout */ |
|
b672b0dac57b
[gaim-migrate @ 827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
715
diff
changeset
|
586 | *status = 0; |
|
b672b0dac57b
[gaim-migrate @ 827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
715
diff
changeset
|
587 | else |
|
b672b0dac57b
[gaim-migrate @ 827]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
715
diff
changeset
|
588 | *status = i; /* can be 0 or -1 */ |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
589 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
590 | faim_mutex_unlock(&sess->connlistlock); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
591 | return NULL; /* no waiting or error, return */ |
| 2 | 592 | } |
| 593 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
594 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
595 | * aim_conn_isready - Test if a connection is marked ready |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
596 | * @conn: Connection to test |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
597 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
598 | * Returns true if the connection is ready, false otherwise. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
599 | * Returns -1 if the connection is invalid. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
600 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
601 | * XXX: This is deprecated. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
602 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
603 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
604 | faim_export int aim_conn_isready(struct aim_conn_t *conn) |
| 2 | 605 | { |
| 606 | if (conn) | |
| 607 | return (conn->status & 0x0001); | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
608 | return -1; |
| 2 | 609 | } |
| 610 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
611 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
612 | * aim_conn_setstatus - Set the status of a connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
613 | * @conn: Connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
614 | * @status: New status |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
615 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
616 | * @newstatus is %XOR'd with the previous value of the connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
617 | * status and returned. Returns -1 if the connection is invalid. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
618 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
619 | * This isn't real useful. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
620 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
621 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
622 | faim_export int aim_conn_setstatus(struct aim_conn_t *conn, int status) |
| 2 | 623 | { |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
624 | int val; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
625 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
626 | if (!conn) |
| 2 | 627 | return -1; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
628 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
629 | faim_mutex_lock(&conn->active); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
630 | val = conn->status ^= status; |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
631 | faim_mutex_unlock(&conn->active); |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
632 | return val; |
| 2 | 633 | } |
| 634 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
635 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
636 | * aim_conn_setlatency - Set a forced latency value for connection |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
637 | * @conn: Conn to set latency for |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
638 | * @newval: Number of seconds to force between transmits |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
639 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
640 | * Causes @newval seconds to be spent between transmits on a connection. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
641 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
642 | * This is my lame attempt at overcoming not understanding the rate |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
643 | * limiting. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
644 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
645 | * XXX: This should really be replaced with something that scales and |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
646 | * backs off like the real rate limiting does. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
647 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
648 | */ |
|
840
b80a628d935f
[gaim-migrate @ 850]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
817
diff
changeset
|
649 | faim_export int aim_conn_setlatency(struct aim_conn_t *conn, int newval) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
650 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
651 | if (!conn) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
652 | return -1; |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
653 | |
|
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
654 | faim_mutex_lock(&conn->active); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
655 | conn->forcedlatency = newval; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
656 | conn->lastactivity = 0; /* reset this just to make sure */ |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
657 | faim_mutex_unlock(&conn->active); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
658 | |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
659 | return 0; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
660 | } |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
661 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
662 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
663 | * aim_setupproxy - Configure a proxy for this session |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
664 | * @sess: Session to set proxy for |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
665 | * @server: SOCKS server |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
666 | * @username: SOCKS username |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
667 | * @password: SOCKS password |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
668 | * |
| 935 | 669 | * Call this with your SOCKS5 proxy server parameters before |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
670 | * the first call to aim_newconn(). If called with all %NULL |
| 935 | 671 | * args, it will clear out a previously set proxy. |
| 672 | * | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
673 | * Set username and password to %NULL if not applicable. |
| 935 | 674 | * |
| 675 | */ | |
| 676 | faim_export void aim_setupproxy(struct aim_session_t *sess, char *server, char *username, char *password) | |
| 677 | { | |
| 678 | /* clear out the proxy info */ | |
| 679 | if (!server || !strlen(server)) { | |
| 680 | memset(sess->socksproxy.server, 0, sizeof(sess->socksproxy.server)); | |
| 681 | memset(sess->socksproxy.username, 0, sizeof(sess->socksproxy.username)); | |
| 682 | memset(sess->socksproxy.password, 0, sizeof(sess->socksproxy.password)); | |
| 683 | return; | |
| 684 | } | |
| 685 | ||
| 686 | strncpy(sess->socksproxy.server, server, sizeof(sess->socksproxy.server)); | |
| 687 | if (username && strlen(username)) | |
| 688 | strncpy(sess->socksproxy.username, username, sizeof(sess->socksproxy.username)); | |
| 689 | if (password && strlen(password)) | |
| 690 | strncpy(sess->socksproxy.password, password, sizeof(sess->socksproxy.password)); | |
| 691 | return; | |
| 692 | } | |
| 693 | ||
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
694 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
695 | * aim_session_init - Initializes a session structure |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
696 | * @sess: Session to initialize |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
697 | * @flags: Flags to use. Any of %AIM_SESS_FLAGS %OR'd together. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
698 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
699 | * Sets up the initial values for a session. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
700 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
701 | */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
702 | faim_export void aim_session_init(struct aim_session_t *sess, unsigned long flags) |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
703 | { |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
704 | if (!sess) |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
705 | return; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
706 | |
|
338
21c93bc7ae83
[gaim-migrate @ 348]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
283
diff
changeset
|
707 | memset(sess, 0, sizeof(struct aim_session_t)); |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
708 | aim_connrst(sess); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
709 | sess->queue_outgoing = NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
710 | sess->queue_incoming = NULL; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
711 | sess->pendingjoin = NULL; |
|
715
96292ef864c9
[gaim-migrate @ 725]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
711
diff
changeset
|
712 | aim_initsnachash(sess); |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
713 | sess->snac_nextid = 0x00000001; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
714 | |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
715 | sess->flags = 0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
716 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
717 | /* |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
718 | * Default to SNAC login unless XORLOGIN is explicitly set. |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
719 | */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
720 | if (!(flags & AIM_SESS_FLAGS_XORLOGIN)) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
721 | sess->flags |= AIM_SESS_FLAGS_SNACLOGIN; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
722 | sess->flags |= flags; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
723 | |
|
279
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
724 | /* |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
725 | * This must always be set. Default to the queue-based |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
726 | * version for back-compatibility. |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
727 | */ |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
728 | sess->tx_enqueue = &aim_tx_enqueue__queuebased; |
|
7d5f28322c6a
[gaim-migrate @ 289]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
237
diff
changeset
|
729 | |
|
237
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
730 | return; |
|
83ff5f92ee7e
[gaim-migrate @ 247]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
2
diff
changeset
|
731 | } |
|
1081
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
732 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
733 | /** |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
734 | * aim_conn_isconnecting - Determine if a connection is connecting |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
735 | * @conn: Connection to examine |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
736 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
737 | * Returns nonzero if the connection is in the process of |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
738 | * connecting (or if it just completed and aim_conn_completeconnect() |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
739 | * has yet to be called on it). |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
740 | * |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
741 | */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
742 | faim_export int aim_conn_isconnecting(struct aim_conn_t *conn) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
743 | { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
744 | if (!conn) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
745 | return 0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
746 | return (conn->status & AIM_CONN_STATUS_INPROGRESS)?1:0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
747 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
748 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
749 | faim_export int aim_conn_completeconnect(struct aim_session_t *sess, struct aim_conn_t *conn) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
750 | { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
751 | fd_set fds, wfds; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
752 | struct timeval tv; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
753 | int res, error = ETIMEDOUT; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
754 | rxcallback_t userfunc; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
755 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
756 | if (!conn || (conn->fd == -1)) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
757 | return -1; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
758 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
759 | if (!(conn->status & AIM_CONN_STATUS_INPROGRESS)) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
760 | return -1; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
761 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
762 | FD_ZERO(&fds); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
763 | FD_SET(conn->fd, &fds); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
764 | FD_ZERO(&wfds); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
765 | FD_SET(conn->fd, &wfds); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
766 | tv.tv_sec = 0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
767 | tv.tv_usec = 0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
768 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
769 | if ((res = select(conn->fd+1, &fds, &wfds, NULL, &tv)) == -1) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
770 | error = errno; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
771 | aim_conn_close(conn); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
772 | errno = error; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
773 | return -1; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
774 | } else if (res == 0) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
775 | printf("faim: aim_conn_completeconnect: false alarm on %d\n", conn->fd); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
776 | return 0; /* hasn't really completed yet... */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
777 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
778 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
779 | if (FD_ISSET(conn->fd, &fds) || FD_ISSET(conn->fd, &wfds)) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
780 | int len = sizeof(error); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
781 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
782 | if (getsockopt(conn->fd, SOL_SOCKET, SO_ERROR, &error, &len) < 0) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
783 | error = errno; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
784 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
785 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
786 | if (error) { |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
787 | aim_conn_close(conn); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
788 | errno = error; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
789 | return -1; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
790 | } |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
791 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
792 | fcntl(conn->fd, F_SETFL, 0); /* XXX should restore original flags */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
793 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
794 | conn->status &= ~AIM_CONN_STATUS_INPROGRESS; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
795 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
796 | if ((userfunc = aim_callhandler(conn, AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNCOMPLETE))) |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
797 | userfunc(sess, NULL, conn); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
798 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
799 | /* Flush out the queues if there was something waiting for this conn */ |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
800 | aim_tx_flushqueue(sess); |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
801 | |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
802 | return 0; |
|
0fb24c9d4c7d
[gaim-migrate @ 1091]
Eric Warmenhoven <warmenhoven@yahoo.com>
parents:
1002
diff
changeset
|
803 | } |