# HG changeset patch # User Mark Doliner # Date 1047022571 0 # Node ID eab1309693b88beb23bc0da304f2b2e880b6bb5a # Parent 788f783431136e16659f0952058f88c412698d71 [gaim-migrate @ 4975] It's a step in the right direction. Maybe. committer: Tailor Script diff -r 788f78343113 -r eab1309693b8 src/protocols/oscar/aim.h --- a/src/protocols/oscar/aim.h Fri Mar 07 07:01:44 2003 +0000 +++ b/src/protocols/oscar/aim.h Fri Mar 07 07:36:11 2003 +0000 @@ -1303,6 +1303,7 @@ faim_export int aim_icq_reqofflinemsgs(aim_session_t *sess); faim_export int aim_icq_ackofflinemsgs(aim_session_t *sess); +faim_export int aim_icq_hideip(aim_session_t *sess); faim_export int aim_icq_changepasswd(aim_session_t *sess, const char *passwd); faim_export int aim_icq_getsimpleinfo(aim_session_t *sess, const char *uin); faim_export int aim_icq_getallinfo(aim_session_t *sess, const char *uin); diff -r 788f78343113 -r eab1309693b8 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 */ diff -r 788f78343113 -r eab1309693b8 src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Fri Mar 07 07:01:44 2003 +0000 +++ b/src/protocols/oscar/oscar.c Fri Mar 07 07:36:11 2003 +0000 @@ -3481,8 +3481,10 @@ /* XXX - Should call aim_bos_setidle with 0x0000 */ - /* XXX - Should only call reqofflinemsgs when using ICQ? */ - aim_icq_reqofflinemsgs(sess); + if (od->icq) { + aim_icq_reqofflinemsgs(sess); + aim_icq_hideip(sess); + } aim_reqservice(sess, fr->conn, AIM_CONN_TYPE_CHATNAV); if (sess->authinfo->email) @@ -3531,6 +3533,9 @@ info = va_arg(ap, struct aim_icq_info *); va_end(ap); + if (!info->uin) + return 0; + g_snprintf(who, sizeof(who), "%lu", info->uin); buf = g_strdup_printf("UIN: %s", who); if (info->nick && info->nick[0]) {