Mercurial > pidgin
comparison src/protocols/oscar/locate.c @ 7466:fa0324675ed9
[gaim-migrate @ 8079]
This might fix the "user info for null unavailable," or whatever.
Let me know when it doesn't.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 09 Nov 2003 07:58:23 +0000 |
parents | 0e7a835e2433 |
children | ef3e646152a1 |
comparison
equal
deleted
inserted
replaced
7465:dedbfdc7ce65 | 7466:fa0324675ed9 |
---|---|
235 cur->away_len = userinfo->away_len; | 235 cur->away_len = userinfo->away_len; |
236 } | 236 } |
237 } | 237 } |
238 | 238 |
239 static void aim_locate_dorequest(aim_session_t *sess) { | 239 static void aim_locate_dorequest(aim_session_t *sess) { |
240 struct userinfo_node *cur = sess->locate.request_queue; | 240 struct userinfo_node *cur = sess->locate.torequest; |
241 | 241 |
242 if (cur == NULL) | 242 if (cur == NULL) |
243 return; | 243 return; |
244 | 244 |
245 if (sess->locate.waiting_for_response == TRUE) | 245 if (sess->locate.waiting_for_response == TRUE) |
246 return; | 246 return; |
247 | 247 |
248 sess->locate.waiting_for_response = TRUE; | 248 sess->locate.waiting_for_response = TRUE; |
249 aim_locate_getinfoshort(sess, cur->sn, 0x00000003); | 249 aim_locate_getinfoshort(sess, cur->sn, 0x00000003); |
250 | |
251 /* Move this node to the "requested" queue */ | |
252 sess->locate.torequest = cur->next; | |
253 cur->next = sess->locate.requested; | |
254 sess->locate.requested = cur; | |
250 } | 255 } |
251 | 256 |
252 /** | 257 /** |
253 * Remove this screen name from our queue. If this info was resquested | 258 * Remove this screen name from our queue. If this info was resquested |
254 * by our info request queue, then pop the next element off of the queue. | 259 * by our info request queue, then pop the next element off of the queue. |
260 */ | 265 */ |
261 static int aim_locate_gotuserinfo(aim_session_t *sess, const char *sn) { | 266 static int aim_locate_gotuserinfo(aim_session_t *sess, const char *sn) { |
262 struct userinfo_node *cur, *del; | 267 struct userinfo_node *cur, *del; |
263 int was_explicit = TRUE; | 268 int was_explicit = TRUE; |
264 | 269 |
265 while ((sess->locate.request_queue != NULL) && (aim_sncmp(sn, sess->locate.request_queue->sn) == 0)) { | 270 while ((sess->locate.requested != NULL) && (aim_sncmp(sn, sess->locate.requested->sn) == 0)) { |
266 del = sess->locate.request_queue; | 271 del = sess->locate.requested; |
267 sess->locate.request_queue = del->next; | 272 sess->locate.requested = del->next; |
268 was_explicit = FALSE; | 273 was_explicit = FALSE; |
269 free(del->sn); | 274 free(del->sn); |
270 free(del); | 275 free(del); |
271 } | 276 } |
272 | 277 |
273 cur = sess->locate.request_queue; | 278 cur = sess->locate.requested; |
274 while ((cur != NULL) && (cur->next != NULL)) { | 279 while ((cur != NULL) && (cur->next != NULL)) { |
275 if (aim_sncmp(sn, cur->next->sn) == 0) { | 280 if (aim_sncmp(sn, cur->next->sn) == 0) { |
276 del = cur->next; | 281 del = cur->next; |
277 cur->next = del->next; | 282 cur->next = del->next; |
278 was_explicit = FALSE; | 283 was_explicit = FALSE; |
292 | 297 |
293 faim_internal void aim_locate_requestuserinfo(aim_session_t *sess, const char *sn) { | 298 faim_internal void aim_locate_requestuserinfo(aim_session_t *sess, const char *sn) { |
294 struct userinfo_node *cur; | 299 struct userinfo_node *cur; |
295 | 300 |
296 /* Make sure we aren't already requesting info for this buddy */ | 301 /* Make sure we aren't already requesting info for this buddy */ |
297 cur = sess->locate.request_queue; | 302 cur = sess->locate.torequest; |
298 while (cur != NULL) { | 303 while (cur != NULL) { |
299 if (aim_sncmp(sn, cur->sn) == 0) | 304 if (aim_sncmp(sn, cur->sn) == 0) |
300 return; | 305 return; |
301 cur = cur->next; | 306 cur = cur->next; |
302 } | 307 } |
303 | 308 |
304 /* Add a new node to our request queue */ | 309 /* Add a new node to our request queue */ |
305 cur = (struct userinfo_node *)malloc(sizeof(struct userinfo_node)); | 310 cur = (struct userinfo_node *)malloc(sizeof(struct userinfo_node)); |
306 cur->sn = strdup(sn); | 311 cur->sn = strdup(sn); |
307 cur->next = sess->locate.request_queue; | 312 cur->next = sess->locate.torequest; |
308 sess->locate.request_queue = cur; | 313 sess->locate.torequest = cur; |
309 | 314 |
310 /* Actually request some info up in this piece */ | 315 /* Actually request some info up in this piece */ |
311 aim_locate_dorequest(sess); | 316 aim_locate_dorequest(sess); |
312 } | 317 } |
313 | 318 |