Some of the ICQ 2000b clients (at least build #3281, I don't know if
others are affected) will sometimes report that they speak protocol
version 0, which licq doesn't understand. This results in:
16:39:50: [???] Unknown peer-to-peer mode for RubberDuck (67298666): 0
when logging on.
When trying to send a message directly or check his status message it'll
hang after these lines:
16:40:02: [WRN] Invalid TCP version 0. Attempting v2.
16:40:02: [TCP] Connecting to RubberDuck (67298666) at 80.196.148.218:10003.
16:40:03: [TCP] Shaking hands with RubberDuck (67298666) [v2].
I solved this by making licq fall back to v6 instead of v2 when it
receives an invalid protocol version. Patch attached.
/Jonas Jensen
--- licq-old/src/icqd.cpp Wed Jul 17 05:34:29 2002
+++ licq/src/icqd.cpp Wed Jul 17 17:44:31 2002
@@ -743,8 +743,8 @@
unsigned short v_out = v_in < ICQ_VERSION_TCP ? v_in : ICQ_VERSION_TCP;
if (v_out < 2)
{
- gLog.Warn("%sInvalid TCP version %d. Attempting v2.\n", L_WARNxSTR, v_out);
- v_out = 2;
+ gLog.Warn("%sInvalid TCP version %d. Attempting v6.\n", L_WARNxSTR, v_out);
+ v_out = 6;
}
return v_out;
}