mirror of
https://github.com/RetroShare/RetroShare.git
synced 2025-02-03 11:00:14 -05:00
Tweaked TOU so it can accept Generic Sized Ip Addresses,
even though it will only accept IPv4 addresses. git-svn-id: http://svn.code.sf.net/p/retroshare/code/trunk@7615 b45a01b8-16f6-495d-af2f-9b41ad6348cc
This commit is contained in:
parent
b51c34d23b
commit
bd688f0156
@ -199,8 +199,20 @@ int tou_connect(int sockfd, const struct sockaddr *serv_addr,
|
||||
TcpOnUdp *tous = tou_streams[sockfd];
|
||||
|
||||
|
||||
if (addrlen != sizeof(struct sockaddr_in))
|
||||
if (addrlen < sizeof(struct sockaddr_in))
|
||||
{
|
||||
std::cerr << "tou_connect() ERROR invalid size of sockaddr";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// only IPv4 for the moment.
|
||||
const struct sockaddr_storage *ss_addr = (struct sockaddr_storage *) serv_addr;
|
||||
if (ss_addr->ss_family != AF_INET)
|
||||
{
|
||||
std::cerr << "tou_connect() ERROR not ipv4";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
@ -259,12 +271,25 @@ int tou_listenfor(int sockfd, const struct sockaddr *serv_addr,
|
||||
}
|
||||
TcpOnUdp *tous = tou_streams[sockfd];
|
||||
|
||||
if (addrlen != sizeof(struct sockaddr_in))
|
||||
if (addrlen < sizeof(struct sockaddr_in))
|
||||
{
|
||||
std::cerr << "tou_listenfor() ERROR invalid size of sockaddr";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// only IPv4 for the moment.
|
||||
const struct sockaddr_storage *ss_addr = (struct sockaddr_storage *) serv_addr;
|
||||
if (ss_addr->ss_family != AF_INET)
|
||||
{
|
||||
std::cerr << "tou_listenfor() ERROR not ipv4";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
/* enforce that the udptype is correct */
|
||||
if (tous -> udptype != TOU_RECEIVER_TYPE_UDPPEER)
|
||||
{
|
||||
@ -397,8 +422,20 @@ int tou_accept(int sockfd, struct sockaddr *addr, socklen_t *addrlen)
|
||||
}
|
||||
TcpOnUdp *tous = tou_streams[sockfd];
|
||||
|
||||
if (*addrlen != sizeof(struct sockaddr_in))
|
||||
if (*addrlen < sizeof(struct sockaddr_in))
|
||||
{
|
||||
std::cerr << "tou_accept() ERROR invalid size of sockaddr";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
||||
// only IPv4 for the moment.
|
||||
const struct sockaddr_storage *ss_addr = (struct sockaddr_storage *) addr;
|
||||
if (ss_addr->ss_family != AF_INET)
|
||||
{
|
||||
std::cerr << "tou_accept() ERROR not ipv4";
|
||||
std::cerr << std::endl;
|
||||
tous -> lasterrno = EINVAL;
|
||||
return -1;
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user