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