Hello,

in the past i randomly got disconnected from ICQ network, licq simply went 
offline. we discussed this on irc and found that we all had a "unknown 
service family subtype: 000b" in the logs a few seconds before we get 
disconnected. it is the remote server that closes the connection, not licq.

after some research we found that 0x000b service family subtype most likely 
means the server is going to disconnect/shutdown/beeing maintained or 
something like this. (Some documents interpret 0x000b as "Server pause"... 
hm)

The attached patch should make licq change the server and reconnect when it 
receives such a signal from the server. unfortunately i have no way to 
reproduce this, maybe someone else knows more about it. jon? any idea?

Bye,
Thomas
Index: src/icqd-srv.cpp
===================================================================
RCS file: /cvsroot/licq/licq/src/icqd-srv.cpp,v
retrieving revision 1.92
diff -u -3 -p -r1.92 icqd-srv.cpp
--- src/icqd-srv.cpp	18 Jan 2003 01:29:31 -0000	1.92
+++ src/icqd-srv.cpp	7 Feb 2003 13:06:08 -0000
@@ -1653,6 +1653,15 @@ void CICQDaemon::ProcessServiceFam(CBuff
     break;
   }
 
+	case ICQ_SNACxSUB_PAUSE:
+	{
+		// Server is going to disconnect/pause (maintainance?)
+		// lets change servers and reconnect.
+		gLog.Info("%sServer is going to disconnect/pause. Lets reconnect to another one.\n", L_SRVxSTR);
+		icqRelogon(true);
+		break;
+	}
+
   default:
     gLog.Warn("%sUnknown Service Family Subtype: %04hx\n", L_SRVxSTR, nSubtype);
     break;

Attachment: msg02022/pgp00000.pgp
Description: signature

Reply via email to