static int hostonline(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
int ret = 0;
unsigned short *families;
int famcount, i;
int serviceid;
unsigned char *cookie;
char *ip;
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
struct aim_tlvlist_t *tlvlist;
char *chathack = NULL;
int chathackex = 0;
/* XXX parse this */
static int rateresp(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
return userfunc(sess, rx);
static int ratechange(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
int i = 0, code;
unsigned long currentavg, maxavg;
unsigned long rateclass, windowsize, clear, alert, limit, disconnect;
/* XXX parse this */
static int selfinfo(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
if ((userfunc = aim_callhandler(sess, rx->conn, snac->family, snac->subtype)))
return userfunc(sess, rx);
static int evilnotify(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc = NULL;
+ aim_rxcallback_t userfunc = NULL;
int i = 0;
unsigned short newevil;
struct aim_userinfo_s userinfo;
static int motd(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
char *msg = NULL;
int ret = 0;
struct aim_tlvlist_t *tlvlist;
static int hostversions(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
int vercount;
vercount = datalen/4;
*/
static int memrequest(struct aim_session_t *sess, aim_module_t *mod, struct command_rx_struct *rx, aim_modsnac_t *snac, unsigned char *data, int datalen)
{
- rxcallback_t userfunc;
+ aim_rxcallback_t userfunc;
unsigned long offset, len;
int i = 0;
struct aim_tlvlist_t *list;
} else {
- if ((offset != 0x00001004) || (len != 0x00000004))
- faimdprintf(sess, 0, "sendmemblock: WARNING: sending bad hash... you will be disconnected soon...\n");
-
/*
- * This data is correct for AIM 3.5.1670, offset 0x1000, length 0
+ * This data is correct for AIM 3.5.1670.
*
- * Using this block is as close to "legal" as you can get without
+ * Using these blocks is as close to "legal" as you can get without
* using an AIM binary.
*
- * For the moment, this is the MD5 hash of nothing. Yes, that's
- * right. Nothing. AOL is smart.
- *
*/
- i += aimutil_put32(tx->data+i, 0xd41d8cd9);
- i += aimutil_put32(tx->data+i, 0x8f00b204);
- i += aimutil_put32(tx->data+i, 0xe9800998);
- i += aimutil_put32(tx->data+i, 0xecf8427e);
+ if ((offset == 0x03ffffff) && (len == 0x03ffffff)) {
+
+#if 1 /* with "AnrbnrAqhfzcd" */
+ i += aimutil_put32(tx->data+i, 0x44a95d26);
+ i += aimutil_put32(tx->data+i, 0xd2490423);
+ i += aimutil_put32(tx->data+i, 0x93b8821f);
+ i += aimutil_put32(tx->data+i, 0x51c54b01);
+#else /* no filename */
+ i += aimutil_put32(tx->data+i, 0x1df8cbae);
+ i += aimutil_put32(tx->data+i, 0x5523b839);
+ i += aimutil_put32(tx->data+i, 0xa0e10db3);
+ i += aimutil_put32(tx->data+i, 0xa46d3b39);
+#endif
+
+ } else if ((offset == 0x00001000) && (len == 0x00000000)) {
+
+ i += aimutil_put32(tx->data+i, 0xd41d8cd9);
+ i += aimutil_put32(tx->data+i, 0x8f00b204);
+ i += aimutil_put32(tx->data+i, 0xe9800998);
+ i += aimutil_put32(tx->data+i, 0xecf8427e);
+
+ } else
+ faimdprintf(sess, 0, "sendmemblock: WARNING: unknown hash request\n");
}