Mercurial > pidgin
diff libfaim/aim_rxhandlers.c @ 331:f3c8d79688db
[gaim-migrate @ 341]
GAIM DOES ICQ!!!! CATCHING UP TO EVERYBUDDY! :)
committer: Tailor Script <tailor@pidgin.im>
author | Eric Warmenhoven <eric@warmenhoven.org> |
---|---|
date | Sat, 03 Jun 2000 07:25:42 +0000 |
parents | 0f14e6d8a51b |
children | e4c34ca88d9b |
line wrap: on
line diff
--- a/libfaim/aim_rxhandlers.c Sat Jun 03 00:53:28 2000 +0000 +++ b/libfaim/aim_rxhandlers.c Sat Jun 03 07:25:42 2000 +0000 @@ -375,7 +375,12 @@ case AIM_CONN_TYPE_BOS: { u_short family; u_short subtype; - + + if (workingPtr->type == 0x04) { + workingPtr->handled = aim_negchan_middle(sess, workingPtr); + break; + } + family = aimutil_get16(workingPtr->data); subtype = aimutil_get16(workingPtr->data+2); @@ -686,6 +691,35 @@ } +int aim_negchan_middle(struct aim_session_t *sess, + struct command_rx_struct *command) +{ + struct aim_tlvlist_t *tlvlist; + char *msg = NULL; + unsigned short code = 0; + struct aim_tlv_t *tmptlv; + rxcallback_t userfunc = NULL; + int ret = 1; + + tlvlist = aim_readtlvchain(command->data, command->commandlen); + + if ((tmptlv = aim_gettlv(tlvlist, 0x0009, 1))) + code = aimutil_get16(tmptlv->value); + + if ((tmptlv = aim_gettlv(tlvlist, 0x000b, 1))) + msg = aim_gettlv_str(tlvlist, 0x000b, 1); + + userfunc = aim_callhandler(command->conn, + AIM_CB_FAM_SPECIAL, AIM_CB_SPECIAL_CONNERR); + if (userfunc) + ret = userfunc(sess, command, code, msg); + + aim_freetlvchain(&tlvlist); + free(msg); + + return ret; +} + /* * aim_parse_generalerrs() *