src/protocols/oscar/chat.c

changeset 2421
009ae3cf0e83
parent 2270
c65fc356fb68
child 2672
5c9b7617a1f3
equal deleted inserted replaced
2420:2671118ecf40 2421:009ae3cf0e83
387 * 387 *
388 * SNAC 000e/0002 388 * SNAC 000e/0002
389 */ 389 */
390 static int infoupdate(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) 390 static int infoupdate(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
391 { 391 {
392 struct aim_userinfo_s *userinfo = NULL; 392 aim_userinfo_t *userinfo = NULL;
393 aim_rxcallback_t userfunc; 393 aim_rxcallback_t userfunc;
394 int ret = 0; 394 int ret = 0;
395 int usercount = 0; 395 int usercount = 0;
396 fu8_t detaillevel = 0; 396 fu8_t detaillevel = 0;
397 char *roomname = NULL; 397 char *roomname = NULL;
441 aim_bstream_t occbs; 441 aim_bstream_t occbs;
442 442
443 tmptlv = aim_gettlv(tlvlist, 0x0073, 1); 443 tmptlv = aim_gettlv(tlvlist, 0x0073, 1);
444 444
445 /* Allocate enough userinfo structs for all occupants */ 445 /* Allocate enough userinfo structs for all occupants */
446 userinfo = calloc(usercount, sizeof(struct aim_userinfo_s)); 446 userinfo = calloc(usercount, sizeof(aim_userinfo_t));
447 447
448 aim_bstream_init(&occbs, tmptlv->value, tmptlv->length); 448 aim_bstream_init(&occbs, tmptlv->value, tmptlv->length);
449 449
450 while (curoccupant < usercount) 450 while (curoccupant < usercount)
451 aim_extractuserinfo(sess, &occbs, &userinfo[curoccupant++]); 451 aim_extractuserinfo(sess, &occbs, &userinfo[curoccupant++]);
549 return ret; 549 return ret;
550 } 550 }
551 551
552 static int userlistchange(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) 552 static int userlistchange(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
553 { 553 {
554 struct aim_userinfo_s *userinfo = NULL; 554 aim_userinfo_t *userinfo = NULL;
555 aim_rxcallback_t userfunc; 555 aim_rxcallback_t userfunc;
556 int curcount = 0, ret = 0; 556 int curcount = 0, ret = 0;
557 557
558 while (aim_bstream_empty(bs)) { 558 while (aim_bstream_empty(bs)) {
559 curcount++; 559 curcount++;
560 userinfo = realloc(userinfo, curcount * sizeof(struct aim_userinfo_s)); 560 userinfo = realloc(userinfo, curcount * sizeof(aim_userinfo_t));
561 aim_extractuserinfo(sess, bs, &userinfo[curcount-1]); 561 aim_extractuserinfo(sess, bs, &userinfo[curcount-1]);
562 } 562 }
563 563
564 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) 564 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
565 ret = userfunc(sess, rx, curcount, userinfo); 565 ret = userfunc(sess, rx, curcount, userinfo);
592 * possibly others 592 * possibly others
593 * 593 *
594 */ 594 */
595 static int incomingmsg(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) 595 static int incomingmsg(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs)
596 { 596 {
597 struct aim_userinfo_s userinfo; 597 aim_userinfo_t userinfo;
598 aim_rxcallback_t userfunc; 598 aim_rxcallback_t userfunc;
599 int ret = 0; 599 int ret = 0;
600 fu8_t *cookie; 600 fu8_t *cookie;
601 fu16_t channel; 601 fu16_t channel;
602 aim_tlvlist_t *otl; 602 aim_tlvlist_t *otl;
603 char *msg = NULL; 603 char *msg = NULL;
604 aim_msgcookie_t *ck; 604 aim_msgcookie_t *ck;
605 605
606 memset(&userinfo, 0, sizeof(struct aim_userinfo_s)); 606 memset(&userinfo, 0, sizeof(aim_userinfo_t));
607 607
608 /* 608 /*
609 * ICBM Cookie. Uncache it. 609 * ICBM Cookie. Uncache it.
610 */ 610 */
611 cookie = aimbs_getraw(bs, 8); 611 cookie = aimbs_getraw(bs, 8);

mercurial