Mercurial > pidgin
diff libpurple/protocols/oscar/family_icbm.c @ 17369:f80f7e1047be
Cleanup and simplification of some tlvlist stuff in the oscar protocol.
No functionality change.
author | Mark Doliner <mark@kingant.net> |
---|---|
date | Tue, 29 May 2007 09:51:51 +0000 |
parents | 1927f4ead3ca |
children | eb0933e158a4 |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/family_icbm.c Tue May 29 05:40:45 2007 +0000 +++ b/libpurple/protocols/oscar/family_icbm.c Tue May 29 09:51:51 2007 +0000 @@ -451,7 +451,7 @@ IcbmCookie *msgcookie; struct aim_invite_priv *priv; guchar cookie[8]; - aim_tlvlist_t *otl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; if (!od || !(conn = flap_connection_findbygroup(od, 0x0004))) @@ -498,19 +498,19 @@ byte_stream_putraw(&hdrbs, cookie, sizeof(cookie)); /* I think... */ byte_stream_putcaps(&hdrbs, OSCAR_CAPABILITY_CHAT); - aim_tlvlist_add_16(&itl, 0x000a, 0x0001); - aim_tlvlist_add_noval(&itl, 0x000f); - aim_tlvlist_add_str(&itl, 0x000c, msg); - aim_tlvlist_add_chatroom(&itl, 0x2711, exchange, roomname, instance); - aim_tlvlist_write(&hdrbs, &itl); - - aim_tlvlist_add_raw(&otl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_add_16(&inner_tlvlist, 0x000a, 0x0001); + aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); + aim_tlvlist_add_str(&inner_tlvlist, 0x000c, msg); + aim_tlvlist_add_chatroom(&inner_tlvlist, 0x2711, exchange, roomname, instance); + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &otl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&otl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); @@ -689,7 +689,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; od = peer_conn->od; @@ -705,7 +705,7 @@ /* ICBM header */ aim_im_puticbm(&frame->data, peer_conn->cookie, 0x0002, peer_conn->sn); - aim_tlvlist_add_noval(&tl, 0x0003); + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); byte_stream_new(&hdrbs, 64); @@ -714,16 +714,16 @@ byte_stream_putcaps(&hdrbs, peer_conn->type); /* This TLV means "cancel!" */ - aim_tlvlist_add_16(&itl, 0x000b, 0x0001); - aim_tlvlist_write(&hdrbs, &itl); - - aim_tlvlist_add_raw(&tl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_add_16(&inner_tlvlist, 0x000b, 0x0001); + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &tl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&tl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); } @@ -775,7 +775,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; conn = flap_connection_findbygroup(od, 0x0004); @@ -790,7 +790,7 @@ /* ICBM header */ aim_im_puticbm(&frame->data, cookie, 0x0002, sn); - aim_tlvlist_add_noval(&tl, 0x0003); + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); byte_stream_new(&hdrbs, 128); @@ -798,20 +798,20 @@ byte_stream_putraw(&hdrbs, cookie, 8); byte_stream_putcaps(&hdrbs, OSCAR_CAPABILITY_DIRECTIM); - aim_tlvlist_add_raw(&itl, 0x0002, 4, ip); - aim_tlvlist_add_raw(&itl, 0x0003, 4, ip); - aim_tlvlist_add_16(&itl, 0x0005, port); - aim_tlvlist_add_16(&itl, 0x000a, requestnumber); - aim_tlvlist_add_noval(&itl, 0x000f); - aim_tlvlist_write(&hdrbs, &itl); - - aim_tlvlist_add_raw(&tl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0002, 4, ip); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0003, 4, ip); + aim_tlvlist_add_16(&inner_tlvlist, 0x0005, port); + aim_tlvlist_add_16(&inner_tlvlist, 0x000a, requestnumber); + aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &tl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&tl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); } @@ -826,7 +826,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; guint8 ip_comp[4]; @@ -842,7 +842,7 @@ /* ICBM header */ aim_im_puticbm(&frame->data, cookie, 0x0002, sn); - aim_tlvlist_add_noval(&tl, 0x0003); + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); byte_stream_new(&hdrbs, 128); @@ -850,30 +850,30 @@ byte_stream_putraw(&hdrbs, cookie, 8); byte_stream_putcaps(&hdrbs, OSCAR_CAPABILITY_DIRECTIM); - aim_tlvlist_add_raw(&itl, 0x0002, 4, ip); - aim_tlvlist_add_raw(&itl, 0x0003, 4, ip); - aim_tlvlist_add_16(&itl, 0x0005, pin); - aim_tlvlist_add_16(&itl, 0x000a, requestnumber); - aim_tlvlist_add_noval(&itl, 0x000f); - aim_tlvlist_add_noval(&itl, 0x0010); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0002, 4, ip); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0003, 4, ip); + aim_tlvlist_add_16(&inner_tlvlist, 0x0005, pin); + aim_tlvlist_add_16(&inner_tlvlist, 0x000a, requestnumber); + aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); + aim_tlvlist_add_noval(&inner_tlvlist, 0x0010); /* Send the bitwise complement of the port and ip. As a check? */ ip_comp[0] = ~ip[0]; ip_comp[1] = ~ip[1]; ip_comp[2] = ~ip[2]; ip_comp[3] = ~ip[3]; - aim_tlvlist_add_raw(&itl, 0x0016, 4, ip_comp); - aim_tlvlist_add_16(&itl, 0x0017, ~pin); - - aim_tlvlist_write(&hdrbs, &itl); - - aim_tlvlist_add_raw(&tl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0016, 4, ip_comp); + aim_tlvlist_add_16(&inner_tlvlist, 0x0017, ~pin); + + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &tl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&tl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); } @@ -888,7 +888,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; conn = flap_connection_findbygroup(od, 0x0004); @@ -903,7 +903,7 @@ /* ICBM header */ aim_im_puticbm(&frame->data, cookie, 0x0002, sn); - aim_tlvlist_add_noval(&tl, 0x0003); + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); byte_stream_new(&hdrbs, 512); @@ -911,11 +911,11 @@ byte_stream_putraw(&hdrbs, cookie, 8); byte_stream_putcaps(&hdrbs, OSCAR_CAPABILITY_SENDFILE); - aim_tlvlist_add_raw(&itl, 0x0002, 4, ip); - aim_tlvlist_add_raw(&itl, 0x0003, 4, ip); - aim_tlvlist_add_16(&itl, 0x0005, port); - aim_tlvlist_add_16(&itl, 0x000a, requestnumber); - aim_tlvlist_add_noval(&itl, 0x000f); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0002, 4, ip); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0003, 4, ip); + aim_tlvlist_add_16(&inner_tlvlist, 0x0005, port); + aim_tlvlist_add_16(&inner_tlvlist, 0x000a, requestnumber); + aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); /* TODO: Send 0x0016 and 0x0017 */ #if 0 @@ -924,9 +924,9 @@ * redirect for a file receive (same conditions for * sending 0x000f above) */ - aim_tlvlist_add_raw(&itl, 0x000e, 2, "en"); - aim_tlvlist_add_raw(&itl, 0x000d, 8, "us-ascii"); - aim_tlvlist_add_raw(&itl, 0x000c, 24, "Please accept this file."); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000e, 2, "en"); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000d, 8, "us-ascii"); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000c, 24, "Please accept this file."); #endif if (filename != NULL) @@ -943,19 +943,19 @@ byte_stream_putstr(&bs, filename); byte_stream_put8(&bs, 0x00); - aim_tlvlist_add_raw(&itl, 0x2711, bs.len, bs.data); + aim_tlvlist_add_raw(&inner_tlvlist, 0x2711, bs.len, bs.data); g_free(bs.data); /* End TLV t(2711) */ } - aim_tlvlist_write(&hdrbs, &itl); - aim_tlvlist_add_raw(&tl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &tl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&tl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); } @@ -970,7 +970,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL, *itl = NULL; + GSList *outer_tlvlist = NULL, *inner_tlvlist = NULL; ByteStream hdrbs; guint8 ip_comp[4]; @@ -986,7 +986,7 @@ /* ICBM header */ aim_im_puticbm(&frame->data, cookie, 0x0002, sn); - aim_tlvlist_add_noval(&tl, 0x0003); + aim_tlvlist_add_noval(&outer_tlvlist, 0x0003); byte_stream_new(&hdrbs, 512); @@ -994,20 +994,20 @@ byte_stream_putraw(&hdrbs, cookie, 8); byte_stream_putcaps(&hdrbs, OSCAR_CAPABILITY_SENDFILE); - aim_tlvlist_add_raw(&itl, 0x0002, 4, ip); - aim_tlvlist_add_raw(&itl, 0x0003, 4, ip); - aim_tlvlist_add_16(&itl, 0x0005, pin); - aim_tlvlist_add_16(&itl, 0x000a, requestnumber); - aim_tlvlist_add_noval(&itl, 0x000f); - aim_tlvlist_add_noval(&itl, 0x0010); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0002, 4, ip); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0003, 4, ip); + aim_tlvlist_add_16(&inner_tlvlist, 0x0005, pin); + aim_tlvlist_add_16(&inner_tlvlist, 0x000a, requestnumber); + aim_tlvlist_add_noval(&inner_tlvlist, 0x000f); + aim_tlvlist_add_noval(&inner_tlvlist, 0x0010); /* Send the bitwise complement of the port and ip. As a check? */ ip_comp[0] = ~ip[0]; ip_comp[1] = ~ip[1]; ip_comp[2] = ~ip[2]; ip_comp[3] = ~ip[3]; - aim_tlvlist_add_raw(&itl, 0x0016, 4, ip_comp); - aim_tlvlist_add_16(&itl, 0x0017, ~pin); + aim_tlvlist_add_raw(&inner_tlvlist, 0x0016, 4, ip_comp); + aim_tlvlist_add_16(&inner_tlvlist, 0x0017, ~pin); #if 0 /* TODO: If the following is ever enabled, ensure that it is @@ -1015,9 +1015,9 @@ * redirect for a file receive (same conditions for * sending 0x000f above) */ - aim_tlvlist_add_raw(&itl, 0x000e, 2, "en"); - aim_tlvlist_add_raw(&itl, 0x000d, 8, "us-ascii"); - aim_tlvlist_add_raw(&itl, 0x000c, 24, "Please accept this file."); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000e, 2, "en"); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000d, 8, "us-ascii"); + aim_tlvlist_add_raw(&inner_tlvlist, 0x000c, 24, "Please accept this file."); #endif if (filename != NULL) @@ -1034,20 +1034,20 @@ byte_stream_putstr(&bs, filename); byte_stream_put8(&bs, 0x00); - aim_tlvlist_add_raw(&itl, 0x2711, bs.len, bs.data); + aim_tlvlist_add_raw(&inner_tlvlist, 0x2711, bs.len, bs.data); g_free(bs.data); /* End TLV t(2711) */ } - aim_tlvlist_write(&hdrbs, &itl); - - aim_tlvlist_add_raw(&tl, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); + aim_tlvlist_write(&hdrbs, &inner_tlvlist); + + aim_tlvlist_add_raw(&outer_tlvlist, 0x0005, byte_stream_curpos(&hdrbs), hdrbs.data); g_free(hdrbs.data); - aim_tlvlist_write(&frame->data, &tl); - - aim_tlvlist_free(&itl); - aim_tlvlist_free(&tl); + aim_tlvlist_write(&frame->data, &outer_tlvlist); + + aim_tlvlist_free(inner_tlvlist); + aim_tlvlist_free(outer_tlvlist); flap_connection_send(conn, frame); } @@ -1226,7 +1226,7 @@ aim_rxcallback_t userfunc; guchar cookie[8]; guint16 channel; - aim_tlvlist_t *tlvlist; + GSList *tlvlist; char *sn; int snlen; guint16 icbmflags = 0; @@ -1281,7 +1281,7 @@ g_free(sn); g_free(msg); - aim_tlvlist_free(&tlvlist); + aim_tlvlist_free(tlvlist); return ret; } @@ -1874,11 +1874,11 @@ typedef void (*ch2_args_destructor_t)(OscarData *od, IcbmArgsCh2 *args); -static int incomingim_ch2(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, guint16 channel, aim_userinfo_t *userinfo, aim_tlvlist_t *tlvlist, guint8 *cookie) +static int incomingim_ch2(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, guint16 channel, aim_userinfo_t *userinfo, GSList *tlvlist, guint8 *cookie) { aim_rxcallback_t userfunc; aim_tlv_t *block1, *servdatatlv; - aim_tlvlist_t *list2; + GSList *list2; aim_tlv_t *tlv; IcbmArgsCh2 args; ByteStream bbs, sdbs, *sdbsptr = NULL; @@ -2078,12 +2078,12 @@ g_free((char *)args.encoding); g_free((char *)args.language); - aim_tlvlist_free(&list2); + aim_tlvlist_free(list2); return ret; } -static int incomingim_ch4(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, guint16 channel, aim_userinfo_t *userinfo, aim_tlvlist_t *tlvlist, guint8 *cookie) +static int incomingim_ch4(OscarData *od, FlapConnection *conn, aim_module_t *mod, FlapFrame *frame, aim_modsnac_t *snac, guint16 channel, aim_userinfo_t *userinfo, GSList *tlvlist, guint8 *cookie) { ByteStream meat; aim_rxcallback_t userfunc; @@ -2186,7 +2186,7 @@ ret = incomingim_ch1(od, conn, mod, frame, snac, channel, &userinfo, bs, cookie); } else if (channel == 2) { - aim_tlvlist_t *tlvlist; + GSList *tlvlist; /* * Read block of TLVs (not including the userinfo data). All @@ -2196,14 +2196,14 @@ ret = incomingim_ch2(od, conn, mod, frame, snac, channel, &userinfo, tlvlist, cookie); - aim_tlvlist_free(&tlvlist); + aim_tlvlist_free(tlvlist); } else if (channel == 4) { - aim_tlvlist_t *tlvlist; + GSList *tlvlist; tlvlist = aim_tlvlist_read(bs); ret = incomingim_ch4(od, conn, mod, frame, snac, channel, &userinfo, tlvlist, cookie); - aim_tlvlist_free(&tlvlist); + aim_tlvlist_free(tlvlist); } else { purple_debug_misc("oscar", "icbm: ICBM received on an unsupported channel. Ignoring. (chan = %04x)\n", channel); @@ -2284,7 +2284,7 @@ FlapConnection *conn; FlapFrame *frame; aim_snacid_t snacid; - aim_tlvlist_t *tl = NULL; + GSList *tlvlist = NULL; if (!od || !(conn = flap_connection_findbygroup(od, 0x0004))) return -EINVAL; @@ -2300,9 +2300,9 @@ byte_stream_put8(&frame->data, strlen(sn)); byte_stream_putstr(&frame->data, sn); - aim_tlvlist_add_16(&tl, 0x0003, code); - aim_tlvlist_write(&frame->data, &tl); - aim_tlvlist_free(&tl); + aim_tlvlist_add_16(&tlvlist, 0x0003, code); + aim_tlvlist_write(&frame->data, &tlvlist); + aim_tlvlist_free(tlvlist); flap_connection_send(conn, frame);