mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-05-05 07:35:12 -04:00
Implemented sockaddr_storage functions.
Fixed interfaces for UPnP. Some further tweaks to get TCP connections working again: - hiddenNode issue in p3peers.cc - fixed socklen_t for bind() and connect() calls. - initialise addr to IPv4 for netmgr. - change netAssist (Upnp) interfaces. Still todo: tou address functions, test UDP functionality. git-svn-id: http://svn.code.sf.net/p/retroshare/code/branches/v0.6-initdev@6755 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
6290d8fed9
commit
34ea22d5f6
15 changed files with 1076 additions and 40 deletions
|
@ -386,18 +386,22 @@ void upnphandler::setExternalPort(unsigned short eport_in)
|
|||
}
|
||||
|
||||
/* as determined by uPnP */
|
||||
bool upnphandler::getInternalAddress(struct sockaddr_in &addr)
|
||||
bool upnphandler::getInternalAddress(struct sockaddr_storage &addr)
|
||||
{
|
||||
dataMtx.lock(); /*** LOCK MUTEX ***/
|
||||
addr = upnp_iaddr;
|
||||
|
||||
bool valid = (upnpState >= RS_UPNP_S_ACTIVE);
|
||||
|
||||
// copy to universal addr.
|
||||
sockaddr_storage_clear(addr);
|
||||
sockaddr_storage_setipv4(addr, &upnp_iaddr);
|
||||
|
||||
dataMtx.unlock(); /*** UNLOCK MUTEX ***/
|
||||
|
||||
return valid;
|
||||
}
|
||||
|
||||
bool upnphandler::getExternalAddress(struct sockaddr_in &addr)
|
||||
bool upnphandler::getExternalAddress(struct sockaddr_storage &addr)
|
||||
{
|
||||
std::string externalAdress = cUPnPControlPoint->getExternalAddress();
|
||||
|
||||
|
@ -416,9 +420,13 @@ bool upnphandler::getExternalAddress(struct sockaddr_in &addr)
|
|||
inet_aton(externalIPAddress, &(upnp_eaddr.sin_addr));
|
||||
upnp_eaddr.sin_family = AF_INET;
|
||||
upnp_eaddr.sin_port = htons(eport_curr);
|
||||
|
||||
// copy to universal addr.
|
||||
sockaddr_storage_clear(addr);
|
||||
sockaddr_storage_setipv4(addr, &upnp_eaddr);
|
||||
|
||||
dataMtx.unlock(); /*** UNLOCK MUTEX ***/
|
||||
|
||||
addr = upnp_eaddr;
|
||||
return true;
|
||||
}
|
||||
else
|
||||
|
|
|
@ -36,8 +36,8 @@ class upnphandler: public pqiNetAssistFirewall
|
|||
|
||||
virtual void setInternalPort(unsigned short iport_in);
|
||||
virtual void setExternalPort(unsigned short eport_in);
|
||||
virtual bool getInternalAddress(struct sockaddr_in &addr);
|
||||
virtual bool getExternalAddress(struct sockaddr_in &addr);
|
||||
virtual bool getInternalAddress(struct sockaddr_storage &addr);
|
||||
virtual bool getExternalAddress(struct sockaddr_storage &addr);
|
||||
|
||||
/* TO IMPLEMENT: New Port Forward interface to support as many ports as necessary */
|
||||
virtual bool requestPortForward(const PortForwardParams ¶ms) { return false; }
|
||||
|
|
|
@ -535,7 +535,7 @@ void upnphandler::setExternalPort(unsigned short eport_in)
|
|||
}
|
||||
|
||||
/* as determined by uPnP */
|
||||
bool upnphandler::getInternalAddress(struct sockaddr_in &addr)
|
||||
bool upnphandler::getInternalAddress(struct sockaddr_storage &addr)
|
||||
{
|
||||
// std::cerr << "UPnPHandler::getInternalAddress() pre Lock!" << std::endl;
|
||||
dataMtx.lock(); /*** LOCK MUTEX ***/
|
||||
|
@ -543,7 +543,10 @@ bool upnphandler::getInternalAddress(struct sockaddr_in &addr)
|
|||
|
||||
std::cerr << "UPnPHandler::getInternalAddress()" << std::endl;
|
||||
|
||||
addr = upnp_iaddr;
|
||||
// copy to universal addr.
|
||||
sockaddr_storage_clear(addr);
|
||||
sockaddr_storage_setipv4(addr, &upnp_iaddr);
|
||||
|
||||
bool valid = (upnpState >= RS_UPNP_S_ACTIVE);
|
||||
|
||||
dataMtx.unlock(); /*** UNLOCK MUTEX ***/
|
||||
|
@ -551,14 +554,18 @@ bool upnphandler::getInternalAddress(struct sockaddr_in &addr)
|
|||
return valid;
|
||||
}
|
||||
|
||||
bool upnphandler::getExternalAddress(struct sockaddr_in &addr)
|
||||
bool upnphandler::getExternalAddress(struct sockaddr_storage &addr)
|
||||
{
|
||||
// std::cerr << "UPnPHandler::getExternalAddress() pre Lock!" << std::endl;
|
||||
dataMtx.lock(); /*** LOCK MUTEX ***/
|
||||
// std::cerr << "UPnPHandler::getExternalAddress() postLock!" << std::endl;
|
||||
|
||||
std::cerr << "UPnPHandler::getExternalAddress()" << std::endl;
|
||||
addr = upnp_eaddr;
|
||||
|
||||
// copy to universal addr.
|
||||
sockaddr_storage_clear(addr);
|
||||
sockaddr_storage_setipv4(addr, &upnp_eaddr);
|
||||
|
||||
bool valid = (upnpState == RS_UPNP_S_ACTIVE);
|
||||
|
||||
dataMtx.unlock(); /*** UNLOCK MUTEX ***/
|
||||
|
|
|
@ -62,8 +62,8 @@ virtual bool getActive();
|
|||
|
||||
virtual void setInternalPort(unsigned short iport_in);
|
||||
virtual void setExternalPort(unsigned short eport_in);
|
||||
virtual bool getInternalAddress(struct sockaddr_in &addr);
|
||||
virtual bool getExternalAddress(struct sockaddr_in &addr);
|
||||
virtual bool getInternalAddress(struct sockaddr_storage &addr);
|
||||
virtual bool getExternalAddress(struct sockaddr_storage &addr);
|
||||
|
||||
/* TO IMPLEMENT: New Port Forward interface to support as many ports as necessary */
|
||||
virtual bool requestPortForward(const PortForwardParams &/*params*/) { return false; }
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue