mirror of
https://github.com/RetroShare/RetroShare.git
synced 2024-12-16 11:24:24 -05:00
small change in ext address detection
git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@2477 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
6ab15c8f83
commit
5ed5e8eb92
@ -790,18 +790,24 @@ void p3ConnectMgr::networkConsistencyCheck()
|
|||||||
|
|
||||||
if (!doNetReset) {//set an external address. if ip adresses are different, let's use the stun address, then the extaddrfinder and then the upnp address.
|
if (!doNetReset) {//set an external address. if ip adresses are different, let's use the stun address, then the extaddrfinder and then the upnp address.
|
||||||
struct sockaddr_in extAddr;
|
struct sockaddr_in extAddr;
|
||||||
if (getUpnpExtAddress(extAddr)) {
|
if (getExtFinderExtAddress(extAddr)) {
|
||||||
#ifdef CONN_DEBUG_TICK
|
|
||||||
std::cerr << "p3ConnectMgr::networkConsistencyCheck() using getUpnpExtAddress for ownState.serveraddr." << std::endl;
|
|
||||||
#endif
|
|
||||||
ownState.currentserveraddr = extAddr;
|
|
||||||
} else if (getExtFinderExtAddress(extAddr)) {
|
|
||||||
netExtFinderAddressCheck(); //so we put the extra address flag ok.
|
netExtFinderAddressCheck(); //so we put the extra address flag ok.
|
||||||
#ifdef CONN_DEBUG_TICK
|
#ifdef CONN_DEBUG_TICK
|
||||||
std::cerr << "p3ConnectMgr::networkConsistencyCheck() using getExtFinderExtAddress for ownState.serveraddr." << std::endl;
|
std::cerr << "p3ConnectMgr::networkConsistencyCheck() using getExtFinderExtAddress for ownState.serveraddr." << std::endl;
|
||||||
#endif
|
#endif
|
||||||
ownState.currentserveraddr = extAddr;
|
ownState.currentserveraddr = extAddr;
|
||||||
|
} else if (getUpnpExtAddress(extAddr)) {
|
||||||
|
#ifdef CONN_DEBUG_TICK
|
||||||
|
std::cerr << "p3ConnectMgr::networkConsistencyCheck() using getUpnpExtAddress for ownState.serveraddr." << std::endl;
|
||||||
|
#endif
|
||||||
|
ownState.currentserveraddr = extAddr;
|
||||||
} else {
|
} else {
|
||||||
|
//try to extract ext address from our own ip address list
|
||||||
|
IpAddressTimed extractedAddress;
|
||||||
|
if (peerConnectState::extractExtAddress(ownState.getIpAddressList(), extractedAddress)) {
|
||||||
|
ownState.currentserveraddr = extractedAddress.ipAddr;
|
||||||
|
}
|
||||||
|
|
||||||
//check if a peer is connected, if yes don't do a net reset
|
//check if a peer is connected, if yes don't do a net reset
|
||||||
bool is_connected = false;
|
bool is_connected = false;
|
||||||
std::map<std::string, peerConnectState>::iterator it;
|
std::map<std::string, peerConnectState>::iterator it;
|
||||||
|
@ -550,21 +550,23 @@ void p3disc::recvPeerDetails(RsDiscReply *item)
|
|||||||
mConnMgr->setLocation(pitem->pid, pitem->location);
|
mConnMgr->setLocation(pitem->pid, pitem->location);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
} else {
|
|
||||||
if (pitem->currentremoteaddr.sin_addr.s_addr != 0 && pitem->currentremoteaddr.sin_port != 0 &&
|
//useless, we will exploit the list in the connect manager
|
||||||
pitem->currentremoteaddr.sin_addr.s_addr != 1 && pitem->currentremoteaddr.sin_port != 1 &&
|
// } else {
|
||||||
std::string(inet_ntoa(pitem->currentremoteaddr.sin_addr)) != "1.1.1.1" &&
|
// if (pitem->currentremoteaddr.sin_addr.s_addr != 0 && pitem->currentremoteaddr.sin_port != 0 &&
|
||||||
(!isLoopbackNet(&pitem->currentremoteaddr.sin_addr)) &&
|
// pitem->currentremoteaddr.sin_addr.s_addr != 1 && pitem->currentremoteaddr.sin_port != 1 &&
|
||||||
(!isPrivateNet(&pitem->currentremoteaddr.sin_addr))
|
// std::string(inet_ntoa(pitem->currentremoteaddr.sin_addr)) != "1.1.1.1" &&
|
||||||
) {
|
// (!isLoopbackNet(&pitem->currentremoteaddr.sin_addr)) &&
|
||||||
//the current server address given by the peer looks nice, let's use it for our own ext address if needed
|
// (!isPrivateNet(&pitem->currentremoteaddr.sin_addr))
|
||||||
sockaddr_in tempAddr;
|
// ) {
|
||||||
if (!mConnMgr->getExtFinderExtAddress(tempAddr) && !mConnMgr->getUpnpExtAddress(tempAddr)) {
|
// //the current server address given by the peer looks nice, let's use it for our own ext address if needed
|
||||||
//don't change the port, just the ip
|
// sockaddr_in tempAddr;
|
||||||
pitem->currentremoteaddr.sin_port = mConnMgr->ownState.currentserveraddr.sin_port;
|
// if (!mConnMgr->getExtFinderExtAddress(tempAddr) && !mConnMgr->getUpnpExtAddress(tempAddr)) {
|
||||||
mConnMgr->setExtAddress(mConnMgr->getOwnId(), pitem->currentremoteaddr);
|
// //don't change the port, just the ip
|
||||||
}
|
// pitem->currentremoteaddr.sin_port = mConnMgr->ownState.currentserveraddr.sin_port;
|
||||||
}
|
// mConnMgr->setExtAddress(mConnMgr->getOwnId(), pitem->currentremoteaddr);
|
||||||
|
// }
|
||||||
|
// }
|
||||||
}
|
}
|
||||||
//allways update address list
|
//allways update address list
|
||||||
mConnMgr->setAddressList(pitem->pid, pitem->ipAddressList);
|
mConnMgr->setAddressList(pitem->pid, pitem->ipAddressList);
|
||||||
|
Loading…
Reference in New Issue
Block a user