ip/tinc: accept udp connection from any udp source port
the remote host might be behind a NAT which translates the source port, so if no host could be found, lookup the ip address only.
This commit is contained in:
parent
ec737b6a2e
commit
a54804ed24
1 changed files with 6 additions and 2 deletions
|
@ -1440,12 +1440,16 @@ udpclient(int fd, int incoming)
|
|||
{
|
||||
uchar ip[IPaddrlen];
|
||||
char dir[128];
|
||||
int port;
|
||||
Host *h;
|
||||
|
||||
h = findhost(ip, dir2ipport(fd2dir(fd, dir, sizeof(dir)), ip));
|
||||
port = dir2ipport(fd2dir(fd, dir, sizeof(dir)), ip);
|
||||
h = findhost(ip, port);
|
||||
if(h == nil && incoming)
|
||||
h = findhost(ip, -1); /* might be behind NAT */
|
||||
if(h != nil && h != myhost){
|
||||
procsetname("udpclient %s %s %s %I!%d %s", myhost->name,
|
||||
incoming ? "in": "out", dir, h->ip, h->port, h->name);
|
||||
incoming ? "in": "out", dir, ip, port, h->name);
|
||||
|
||||
if(!incoming){
|
||||
lock(h->cin);
|
||||
|
|
Loading…
Reference in a new issue