+/*
+ * Part two of the ICQ hack. Note the ignoring of the key and clientinfo.
+ */
+static int goddamnicq2(aim_session_t *sess, aim_conn_t *conn, const char *sn, const char *password)
+{
+ static const char clientstr[] = {"ICQ Inc. - Product of ICQ (TM) 2000b.4.65.1.3281.85"};
+ static const char lang[] = {"en"};
+ static const char country[] = {"us"};
+ aim_frame_t *fr;
+ aim_tlvlist_t *tl = NULL;
+ char *password_encoded;
+
+ if (!(password_encoded = (char *) malloc(strlen(password))))
+ return -ENOMEM;
+
+ if (!(fr = aim_tx_new(sess, conn, AIM_FRAMETYPE_FLAP, 0x01, 1152))) {
+ free(password_encoded);
+ return -ENOMEM;
+ }
+
+ aim_encode_password(password, password_encoded);
+
+ aimbs_put32(&fr->data, 0x00000001);
+ aim_addtlvtochain_raw(&tl, 0x0001, strlen(sn), sn);
+ aim_addtlvtochain_raw(&tl, 0x0002, strlen(password), password_encoded);
+ aim_addtlvtochain_raw(&tl, 0x0003, strlen(clientstr), clientstr);
+ aim_addtlvtochain16(&tl, 0x0016, 0x010a);
+ aim_addtlvtochain16(&tl, 0x0017, 0x0004);
+ aim_addtlvtochain16(&tl, 0x0018, 0x0041);
+ aim_addtlvtochain16(&tl, 0x0019, 0x0001);
+ aim_addtlvtochain16(&tl, 0x001a, 0x0cd1);
+ aim_addtlvtochain32(&tl, 0x0014, 0x00000055);
+ aim_addtlvtochain_raw(&tl, 0x000f, strlen(lang), lang);
+ aim_addtlvtochain_raw(&tl, 0x000e, strlen(country), country);
+
+ aim_writetlvchain(&fr->data, &tl);
+
+ free(password_encoded);
+ aim_freetlvchain(&tl);
+
+ aim_tx_enqueue(sess, fr);
+
+ return 0;
+}
+