--- src/kademlia/kademlia/Prefs.cpp.old	Sun Feb  5 08:43:11 2006
+++ src/kademlia/kademlia/Prefs.cpp	Sun Feb  5 08:51:14 2006
@@ -77,6 +77,7 @@
 {
 	m_clientID.setValueRandom();
 	m_lastContact = 0;
+	m_attemptedReconnect = 0;
 	m_recheckip = 0;
 	m_firewalled = 0;
 	m_totalFile = 0;
@@ -150,6 +151,9 @@
 {
 	if( m_lastContact ) {
 		return !((time(NULL) - m_lastContact) < KADEMLIADISCONNECTDELAY);
+	}
+	if( m_attemptedReconnect ) {
+		return !((time(NULL) - m_attemptedReconnect) < KADEMLIADISCONNECTDELAY - MIN2S(5));
 	}
 	return false;
 }
--- src/kademlia/kademlia/Prefs.h.old	Sun Feb  5 07:46:53 2006
+++ src/kademlia/kademlia/Prefs.h	Sun Feb  5 08:48:42 2006
@@ -70,6 +70,9 @@
 	void	setLastContact()					{m_lastContact = time(NULL);}
 	bool	hasLostConnection() const;
 	uint32	getLastContact() const				{return m_lastContact;}
+	
+	void    setAttemptedReconnect() 			{m_attemptedReconnect = time(NULL);}
+	void    setSucceededReconnect()				{m_attemptedReconnect = 0;}
 
 	bool	getFirewalled() const;
 	void	setFirewalled();
@@ -109,6 +112,7 @@
 	wxString	m_filename;
 
 	time_t		m_lastContact;
+	time_t		m_attemptedReconnect;
 	CUInt128	m_clientID;
 	CUInt128	m_clientHash;
 	uint32		m_ip;
--- src/kademlia/net/KademliaUDPListener.cpp.old	Sun Feb  5 08:12:26 2006
+++ src/kademlia/net/KademliaUDPListener.cpp	Sun Feb  5 08:48:14 2006
@@ -132,6 +132,7 @@
 	bool curCon = CKademlia::getPrefs()->hasHadContact();
 	CKademlia::getPrefs()->setLastContact();
 	if( curCon != CKademlia::getPrefs()->hasHadContact()) {
+		CKademlia::getPrefs()->setSucceededReconnect();
 		theApp.ShowConnectionState();
 	}
 
--- src/amule.cpp.old	Sun Feb  5 08:36:20 2006
+++ src/amule.cpp	Sun Feb  5 08:48:14 2006
@@ -1291,6 +1291,7 @@
 				StopKad();
 				if (thePrefs::Reconnect()) {
 					StartKad();
+					Kademlia::CKademlia::getPrefs()->setAttemptedReconnect();
 				}
 			}
 		}
