--- ysmv7_2_9_7/src/YSM_Network.c 2006-07-05 22:33:31.000000000 -0400 +++ ysmv7_2_9_8/src/YSM_Network.c 2006-02-12 14:53:34.000000000 -0500 @@ -1,4 +1,4 @@ -/* $Id: YSM_Network.c,v 1.215 2005/12/26 23:44:58 rad2k Exp $ */ +/* $Id: YSM_Network.c,v 1.216 2006/02/12 17:14:49 rad2k Exp $ */ /* -======================== ysmICQ client ============================- Having fun with a boring Protocol @@ -26,7 +26,7 @@ */ #include "YSM.h" -__RCSID("$Id: YSM_Network.c,v 1.215 2005/12/26 23:44:58 rad2k Exp $"); +__RCSID("$Id: YSM_Network.c,v 1.216 2006/02/12 17:14:49 rad2k Exp $"); #include "YSM_ICQv7.h" #include "YSM_Lists.h" @@ -1504,14 +1504,19 @@ switch(Chars_2_Wordb(thetlv.type)) { - case 0x03: /* Last TLV found */ + + case 0x03: /* user login timestamp */ tsize += len; - /* seen on trillian, extra TLV here type 4 */ - memcpy( &thetlv, data+tsize, sizeof(TLV)); - if (Chars_2_Wordb(thetlv.type) == 4) - tsize += 4; /* skip next TLV head */ + break; + + case 0x13: /* no idea what this is, just yet */ + tsize += len; + break; + + case 0x02: /* start of Message data */ + YSM_TreatMessage( Chars_2_Wordb(MsgFormat), - tsize, + tsize-sizeof(TLV), /* we want start of TLV */ data, r_uin, r_status, @@ -1531,7 +1536,7 @@ /* possibly strange utility msg. */ case 0x05: YSM_TreatMessage( Chars_2_Wordb(MsgFormat), - tsize, + tsize - sizeof(TLV), /* start at 0x05 */ data, r_uin, r_status, @@ -1566,9 +1571,6 @@ if (victim) victim->timing.LastMessage = time(NULL); - /* Quick fingerprint */ - if (data[tsize+5] != 0x01 || data[tsize+6] != 0x01) - fprint = FINGERPRINT_TRILLIAN_CLIENT; memset(&thetlv, '\0', sizeof(TLV)); memcpy(&thetlv, data+tsize, sizeof(TLV));