No release numbers
------------------
+ - Fri Mar 23 01:45:28 UTC 2001
+ - Add AIM_CLIENTINFO_KNOWNGOOD
+ - Fix a few details in aim_send_login (thanks temas)
+ - Prevent aim_rxhandlers from being called recursively
+ - This is something that has been in my PENDING_AIM mailbox for over
+ a year now. I figured it was trivial enough to throw in. EveryBuddy
+ wanted it, but I don't remember why. It should never happen anyway.
+ - Use AIM_CLIENTINFO_KNOWNGOOD
+ - This lets faimtest log in after today's round of AOL being mean.
+
- Fri Mar 16 23:12:58 UTC 2001
- Remove one level from aim_rxdispatch()
* lang = "en"
* country = "us"
* unknown4a = 0x01
+ *
+ * Latest WinAIM that libfaim can emulate without server-side buddylists:
+ * clientstring = "AOL Instant Messenger (SM), version 3.5.1670/WIN32"
+ * major2 = 0x0004
+ * major = 0x0003
+ * minor = 0x0005
+ * minor2 = 0x0000
+ * build = 0x0686
+ * unknown =0x0000002a
+ *
*/
faim_export int aim_send_login (struct aim_session_t *sess,
struct aim_conn_t *conn,
curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x0003, strlen(clientinfo->clientstring), clientinfo->clientstring);
if (sess->flags & AIM_SESS_FLAGS_SNACLOGIN) {
+
curbyte += aim_puttlv_16(newpacket->data+curbyte, 0x0016, (unsigned short)clientinfo->major2);
curbyte += aim_puttlv_16(newpacket->data+curbyte, 0x0017, (unsigned short)clientinfo->major);
curbyte += aim_puttlv_16(newpacket->data+curbyte, 0x0018, (unsigned short)clientinfo->minor);
curbyte += aim_puttlv_32(newpacket->data+curbyte, 0x0014, clientinfo->unknown);
curbyte += aim_puttlv_16(newpacket->data+curbyte, 0x0009, 0x0015);
- curbyte += aim_puttlv_8(newpacket->data+curbyte, 0x004a, 0x00);
+
} else {
/* Use very specific version numbers, to further indicate the hack. */
curbyte += aim_puttlv_16(newpacket->data+curbyte, 0x0016, 0x010a);
}
if (strlen(clientinfo->country))
- curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000e, strlen(clientinfo->country), clientinfo->country);
+ curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000f, strlen(clientinfo->country), clientinfo->country);
else
- curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000e, 2, "us");
+ curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000f, 2, "us");
if (strlen(clientinfo->lang))
- curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000f, strlen(clientinfo->lang), clientinfo->lang);
+ curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000e, strlen(clientinfo->lang), clientinfo->lang);
else
- curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000f, 2, "en");
+ curbyte += aim_puttlv_str(newpacket->data+curbyte, 0x000e, 2, "en");
newpacket->commandlen = curbyte;
{
int i = 0;
struct command_rx_struct *workingPtr = NULL;
+ static int critical = 0;
+ if (critical)
+ return 0; /* don't call recursively! */
+
+ critical = 1;
+
if (sess->queue_incoming == NULL) {
faimdprintf(sess, 1, "parse_generic: incoming packet queue empty.\n");
- return 0;
} else {
workingPtr = sess->queue_incoming;
for (i = 0; workingPtr != NULL; workingPtr = workingPtr->next, i++) {
workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr);
}
-
- /* Try it raw and see if we can get it to happen... */
- if (!workingPtr->handled) /* XXX this is probably bad. */
- workingPtr->handled = aim_callhandler_noparam(sess, workingPtr->conn, family, subtype, workingPtr);
-
}
}
* you'll have :)
*/
aim_purge_rxqueue(sess);
+
+ critical = 0;
return 0;
}