diff -r e1dc93b141d3 -r 1f5d72a07e64 src/protocols/oscar/icq.c --- a/src/protocols/oscar/icq.c Fri Mar 07 07:01:44 2003 +0000 +++ b/src/protocols/oscar/icq.c Fri Mar 07 07:36:11 2003 +0000 @@ -70,6 +70,41 @@ return 0; } +faim_export int aim_icq_hideip(aim_session_t *sess) +{ + aim_conn_t *conn; + aim_frame_t *fr; + aim_snacid_t snacid; + int bslen; + + if (!sess || !(conn = aim_conn_findbygroup(sess, 0x0015))) + return -EINVAL; + + bslen = 2+4+2+2+2+4; + + if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + 4 + bslen))) + return -ENOMEM; + + snacid = aim_cachesnac(sess, 0x0015, 0x0002, 0x0000, NULL, 0); + aim_putsnac(&fr->data, 0x0015, 0x0002, 0x0000, snacid); + + /* For simplicity, don't bother using a tlvlist */ + aimbs_put16(&fr->data, 0x0001); + aimbs_put16(&fr->data, bslen); + + aimbs_putle16(&fr->data, bslen - 2); + aimbs_putle32(&fr->data, atoi(sess->sn)); + aimbs_putle16(&fr->data, 0x07d0); /* I command thee. */ + aimbs_putle16(&fr->data, snacid); /* eh. */ + aimbs_putle16(&fr->data, 0x0424); /* shrug. */ + aimbs_putle16(&fr->data, 0x0001); + aimbs_putle16(&fr->data, 0x0001); + + aim_tx_enqueue(sess, fr); + + return 0; +} + faim_export int aim_icq_changepasswd(aim_session_t *sess, const char *passwd) { aim_conn_t *conn; @@ -337,8 +372,12 @@ } switch (subtype) { + case 0x00a0: { /* hide ip status */ + /* nothing */ + } break; + case 0x00aa: { /* password change status */ - aimbs_getle8(&qbs); /* 0x000a for success */ + /* nothing */ } break; case 0x00c8: { /* general and "home" information */