| 62 |
62 |
| 63 aimbs_putle16(&fr->data, bslen - 2); |
63 aimbs_putle16(&fr->data, bslen - 2); |
| 64 aimbs_putle32(&fr->data, atoi(sess->sn)); |
64 aimbs_putle32(&fr->data, atoi(sess->sn)); |
| 65 aimbs_putle16(&fr->data, 0x003e); /* I command thee. */ |
65 aimbs_putle16(&fr->data, 0x003e); /* I command thee. */ |
| 66 aimbs_putle16(&fr->data, snacid); /* eh. */ |
66 aimbs_putle16(&fr->data, snacid); /* eh. */ |
| |
67 |
| |
68 aim_tx_enqueue(sess, fr); |
| |
69 |
| |
70 return 0; |
| |
71 } |
| |
72 |
| |
73 faim_export int aim_icq_hideip(aim_session_t *sess) |
| |
74 { |
| |
75 aim_conn_t *conn; |
| |
76 aim_frame_t *fr; |
| |
77 aim_snacid_t snacid; |
| |
78 int bslen; |
| |
79 |
| |
80 if (!sess || !(conn = aim_conn_findbygroup(sess, 0x0015))) |
| |
81 return -EINVAL; |
| |
82 |
| |
83 bslen = 2+4+2+2+2+4; |
| |
84 |
| |
85 if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x02, 10 + 4 + bslen))) |
| |
86 return -ENOMEM; |
| |
87 |
| |
88 snacid = aim_cachesnac(sess, 0x0015, 0x0002, 0x0000, NULL, 0); |
| |
89 aim_putsnac(&fr->data, 0x0015, 0x0002, 0x0000, snacid); |
| |
90 |
| |
91 /* For simplicity, don't bother using a tlvlist */ |
| |
92 aimbs_put16(&fr->data, 0x0001); |
| |
93 aimbs_put16(&fr->data, bslen); |
| |
94 |
| |
95 aimbs_putle16(&fr->data, bslen - 2); |
| |
96 aimbs_putle32(&fr->data, atoi(sess->sn)); |
| |
97 aimbs_putle16(&fr->data, 0x07d0); /* I command thee. */ |
| |
98 aimbs_putle16(&fr->data, snacid); /* eh. */ |
| |
99 aimbs_putle16(&fr->data, 0x0424); /* shrug. */ |
| |
100 aimbs_putle16(&fr->data, 0x0001); |
| |
101 aimbs_putle16(&fr->data, 0x0001); |
| 67 |
102 |
| 68 aim_tx_enqueue(sess, fr); |
103 aim_tx_enqueue(sess, fr); |
| 69 |
104 |
| 70 return 0; |
105 return 0; |
| 71 } |
106 } |
| 335 info->next = sess->icq_info; |
370 info->next = sess->icq_info; |
| 336 sess->icq_info = info; |
371 sess->icq_info = info; |
| 337 } |
372 } |
| 338 |
373 |
| 339 switch (subtype) { |
374 switch (subtype) { |
| |
375 case 0x00a0: { /* hide ip status */ |
| |
376 /* nothing */ |
| |
377 } break; |
| |
378 |
| 340 case 0x00aa: { /* password change status */ |
379 case 0x00aa: { /* password change status */ |
| 341 aimbs_getle8(&qbs); /* 0x000a for success */ |
380 /* nothing */ |
| 342 } break; |
381 } break; |
| 343 |
382 |
| 344 case 0x00c8: { /* general and "home" information */ |
383 case 0x00c8: { /* general and "home" information */ |
| 345 info->nick = aimbs_getstr(&qbs, aimbs_getle16(&qbs)); |
384 info->nick = aimbs_getstr(&qbs, aimbs_getle16(&qbs)); |
| 346 info->first = aimbs_getstr(&qbs, aimbs_getle16(&qbs)); |
385 info->first = aimbs_getstr(&qbs, aimbs_getle16(&qbs)); |