Mercurial > pidgin
comparison src/protocols/oscar/service.c @ 4871:0b64f386a7b8
[gaim-migrate @ 5201]
Nathan is SO the man. He pointed out that oscar was leaking about
500k per IM. No, just kidding. But this should help Gaim leak a
little less. It was all Nathan. He is so S-M-R-T.
committer: Tailor Script <tailor@pidgin.im>
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Sun, 23 Mar 2003 07:59:17 +0000 |
parents | 051265d35a36 |
children | ad589b887af9 |
comparison
equal
deleted
inserted
replaced
4870:773135edda4a | 4871:0b64f386a7b8 |
---|---|
390 } | 390 } |
391 | 391 |
392 /* Subtype 0x000a - Rate Change */ | 392 /* Subtype 0x000a - Rate Change */ |
393 static int ratechange(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 393 static int ratechange(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
394 { | 394 { |
395 int ret = 0; | |
395 aim_rxcallback_t userfunc; | 396 aim_rxcallback_t userfunc; |
396 fu16_t code, rateclass; | 397 fu16_t code, rateclass; |
397 fu32_t currentavg, maxavg, windowsize, clear, alert, limit, disconnect; | 398 fu32_t currentavg, maxavg, windowsize, clear, alert, limit, disconnect; |
398 | 399 |
399 code = aimbs_get16(bs); | 400 code = aimbs_get16(bs); |
406 disconnect = aimbs_get32(bs); | 407 disconnect = aimbs_get32(bs); |
407 currentavg = aimbs_get32(bs); | 408 currentavg = aimbs_get32(bs); |
408 maxavg = aimbs_get32(bs); | 409 maxavg = aimbs_get32(bs); |
409 | 410 |
410 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 411 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
411 return userfunc(sess, rx, code, rateclass, windowsize, clear, alert, limit, disconnect, currentavg, maxavg); | 412 ret = userfunc(sess, rx, code, rateclass, windowsize, clear, alert, limit, disconnect, currentavg, maxavg); |
412 | 413 |
413 return 0; | 414 return ret; |
414 } | 415 } |
415 | 416 |
416 /* | 417 /* |
417 * How Migrations work. | 418 * How Migrations work. |
418 * | 419 * |
427 */ | 428 */ |
428 | 429 |
429 /* Subtype 0x000b - Service Pause */ | 430 /* Subtype 0x000b - Service Pause */ |
430 static int serverpause(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 431 static int serverpause(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
431 { | 432 { |
433 int ret = 0; | |
432 aim_rxcallback_t userfunc; | 434 aim_rxcallback_t userfunc; |
433 | 435 |
434 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 436 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
435 return userfunc(sess, rx); | 437 ret = userfunc(sess, rx); |
436 | 438 |
437 return 0; | 439 return ret; |
438 } | 440 } |
439 | 441 |
440 /* | 442 /* |
441 * Subtype 0x000c - Service Pause Acknowledgement | 443 * Subtype 0x000c - Service Pause Acknowledgement |
442 * | 444 * |
475 } | 477 } |
476 | 478 |
477 /* Subtype 0x000d - Service Resume */ | 479 /* Subtype 0x000d - Service Resume */ |
478 static int serverresume(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 480 static int serverresume(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
479 { | 481 { |
482 int ret = 0; | |
480 aim_rxcallback_t userfunc; | 483 aim_rxcallback_t userfunc; |
481 | 484 |
482 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 485 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
483 return userfunc(sess, rx); | 486 ret = userfunc(sess, rx); |
484 | 487 |
485 return 0; | 488 return ret; |
486 } | 489 } |
487 | 490 |
488 /* Subtype 0x000e - Request self-info */ | 491 /* Subtype 0x000e - Request self-info */ |
489 faim_export int aim_reqpersonalinfo(aim_session_t *sess, aim_conn_t *conn) | 492 faim_export int aim_reqpersonalinfo(aim_session_t *sess, aim_conn_t *conn) |
490 { | 493 { |
492 } | 495 } |
493 | 496 |
494 /* Subtype 0x000f - Self User Info */ | 497 /* Subtype 0x000f - Self User Info */ |
495 static int selfinfo(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 498 static int selfinfo(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
496 { | 499 { |
500 int ret = 0; | |
497 aim_rxcallback_t userfunc; | 501 aim_rxcallback_t userfunc; |
498 aim_userinfo_t userinfo; | 502 aim_userinfo_t userinfo; |
499 | 503 |
500 aim_extractuserinfo(sess, bs, &userinfo); | 504 aim_extractuserinfo(sess, bs, &userinfo); |
501 | 505 |
502 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 506 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
503 return userfunc(sess, rx, &userinfo); | 507 ret = userfunc(sess, rx, &userinfo); |
504 | 508 |
505 return 0; | 509 return ret; |
506 } | 510 } |
507 | 511 |
508 /* Subtype 0x0010 - Evil Notification */ | 512 /* Subtype 0x0010 - Evil Notification */ |
509 static int evilnotify(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 513 static int evilnotify(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
510 { | 514 { |
515 int ret = 0; | |
511 aim_rxcallback_t userfunc; | 516 aim_rxcallback_t userfunc; |
512 fu16_t newevil; | 517 fu16_t newevil; |
513 aim_userinfo_t userinfo; | 518 aim_userinfo_t userinfo; |
514 | 519 |
515 memset(&userinfo, 0, sizeof(aim_userinfo_t)); | 520 memset(&userinfo, 0, sizeof(aim_userinfo_t)); |
518 | 523 |
519 if (aim_bstream_empty(bs)) | 524 if (aim_bstream_empty(bs)) |
520 aim_extractuserinfo(sess, bs, &userinfo); | 525 aim_extractuserinfo(sess, bs, &userinfo); |
521 | 526 |
522 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 527 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
523 return userfunc(sess, rx, newevil, &userinfo); | 528 ret = userfunc(sess, rx, newevil, &userinfo); |
524 | 529 |
525 return 0; | 530 return ret; |
526 } | 531 } |
527 | 532 |
528 /* | 533 /* |
529 * Subtype 0x0011 - Idle Notification | 534 * Subtype 0x0011 - Idle Notification |
530 * | 535 * |
794 * | 799 * |
795 */ | 800 */ |
796 /* Subtype 0x001f - Client verification */ | 801 /* Subtype 0x001f - Client verification */ |
797 static int memrequest(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) | 802 static int memrequest(aim_session_t *sess, aim_module_t *mod, aim_frame_t *rx, aim_modsnac_t *snac, aim_bstream_t *bs) |
798 { | 803 { |
804 int ret = 0; | |
799 aim_rxcallback_t userfunc; | 805 aim_rxcallback_t userfunc; |
800 fu32_t offset, len; | 806 fu32_t offset, len; |
801 aim_tlvlist_t *list; | 807 aim_tlvlist_t *list; |
802 char *modname; | 808 char *modname; |
803 | 809 |
808 modname = aim_gettlv_str(list, 0x0001, 1); | 814 modname = aim_gettlv_str(list, 0x0001, 1); |
809 | 815 |
810 faimdprintf(sess, 1, "data at 0x%08lx (%d bytes) of requested\n", offset, len, modname ? modname : "aim.exe"); | 816 faimdprintf(sess, 1, "data at 0x%08lx (%d bytes) of requested\n", offset, len, modname ? modname : "aim.exe"); |
811 | 817 |
812 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) | 818 if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype))) |
813 return userfunc(sess, rx, offset, len, modname); | 819 ret = userfunc(sess, rx, offset, len, modname); |
814 | 820 |
815 free(modname); | 821 free(modname); |
816 aim_freetlvchain(&list); | 822 aim_freetlvchain(&list); |
817 | 823 |
818 return 0; | 824 return ret; |
819 } | 825 } |
820 | 826 |
821 #if 0 | 827 #if 0 |
822 static void dumpbox(aim_session_t *sess, unsigned char *buf, int len) | 828 static void dumpbox(aim_session_t *sess, unsigned char *buf, int len) |
823 { | 829 { |