mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-30 19:34:31 -04:00
Additions to tcponudp to add a TouKeepAlive system.
This is only used if we are in 'firewalled' mode. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@360 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
31454138b7
commit
6dd3d30d8e
9 changed files with 335 additions and 25 deletions
|
@ -75,7 +75,7 @@ peerConnectState::peerConnectState()
|
|||
|
||||
name("nameless"), state(0), actions(0),
|
||||
source(0),
|
||||
inConnAttempt(0), connAttemptTS(0)
|
||||
inConnAttempt(0), lastattempt(0)
|
||||
{
|
||||
sockaddr_clear(&localaddr);
|
||||
sockaddr_clear(&serveraddr);
|
||||
|
@ -215,6 +215,9 @@ void p3ConnectMgr::netStartup()
|
|||
/* StunInit gets a list of peers, and asks the DHT to find them...
|
||||
* This is needed for all systems so startup straight away
|
||||
*/
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netStartup()" << std::endl;
|
||||
#endif
|
||||
|
||||
loadConfiguration();
|
||||
netDhtInit();
|
||||
|
@ -228,18 +231,27 @@ void p3ConnectMgr::netStartup()
|
|||
|
||||
mNetInitTS = time(NULL);
|
||||
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netStartup() tou_stunkeepalive() enabled" << std::endl;
|
||||
#endif
|
||||
tou_stunkeepalive(1);
|
||||
|
||||
ownState.netMode &= ~(RS_NET_MODE_ACTUAL);
|
||||
|
||||
switch(ownState.netMode & RS_NET_MODE_TRYMODE)
|
||||
{
|
||||
case RS_NET_MODE_TRY_UPNP:
|
||||
mNetStatus = RS_NET_UPNP_INIT;
|
||||
ownState.netMode |= RS_NET_MODE_UDP;
|
||||
mNetStatus = RS_NET_UPNP_INIT;
|
||||
break;
|
||||
|
||||
case RS_NET_MODE_TRY_EXT: /* v similar to UDP */
|
||||
ownState.netMode |= RS_NET_MODE_EXT;
|
||||
mNetStatus = RS_NET_UDP_SETUP;
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netStartup() disabling stunkeepalive() cos EXT" << std::endl;
|
||||
#endif
|
||||
tou_stunkeepalive(0);
|
||||
break;
|
||||
|
||||
case RS_NET_MODE_TRY_UDP:
|
||||
|
@ -322,6 +334,9 @@ void p3ConnectMgr::netTick()
|
|||
|
||||
void p3ConnectMgr::netUdpInit()
|
||||
{
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netUdpInit()" << std::endl;
|
||||
#endif
|
||||
connMtx.lock(); /* LOCK MUTEX */
|
||||
|
||||
struct sockaddr_in iaddr = ownState.localaddr;
|
||||
|
@ -335,6 +350,9 @@ void p3ConnectMgr::netUdpInit()
|
|||
|
||||
void p3ConnectMgr::netDhtInit()
|
||||
{
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netDhtInit()" << std::endl;
|
||||
#endif
|
||||
connMtx.lock(); /* LOCK MUTEX */
|
||||
|
||||
uint32_t vs = ownState.visState;
|
||||
|
@ -347,6 +365,9 @@ void p3ConnectMgr::netDhtInit()
|
|||
|
||||
void p3ConnectMgr::netUpnpInit()
|
||||
{
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netUpnpInit()" << std::endl;
|
||||
#endif
|
||||
uint16_t eport, iport;
|
||||
|
||||
connMtx.lock(); /* LOCK MUTEX */
|
||||
|
@ -390,6 +411,10 @@ void p3ConnectMgr::netUpnpCheck()
|
|||
/* UPnP Failed us! */
|
||||
mUpnpAddrValid = false;
|
||||
mNetStatus = RS_NET_UDP_SETUP;
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netUpnpCheck() ensabling stunkeepalive() cos UDP" << std::endl;
|
||||
#endif
|
||||
tou_stunkeepalive(1);
|
||||
|
||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
||||
}
|
||||
|
@ -404,6 +429,10 @@ void p3ConnectMgr::netUpnpCheck()
|
|||
mNetStatus = RS_NET_UDP_SETUP;
|
||||
/* Fix netMode & Clear others! */
|
||||
ownState.netMode = RS_NET_MODE_TRY_UPNP | RS_NET_MODE_UPNP;
|
||||
#ifdef CONN_DEBUG
|
||||
std::cerr << "p3ConnectMgr::netUpnpCheck() disabling stunkeepalive() cos uPnP" << std::endl;
|
||||
#endif
|
||||
tou_stunkeepalive(0);
|
||||
|
||||
connMtx.unlock(); /* UNLOCK MUTEX */
|
||||
}
|
||||
|
@ -964,6 +993,7 @@ bool p3ConnectMgr::connectAttempt(std::string id, struct sockaddr_in &addr,
|
|||
return false;
|
||||
}
|
||||
|
||||
it->second.lastattempt = time(NULL); /* time of last connect attempt */
|
||||
it->second.inConnAttempt = true;
|
||||
it->second.currentConnAddr = it->second.connAddrs.front();
|
||||
it->second.connAddrs.pop_front();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue