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;
 }

Reply via email to