VirtualBox

Changeset 16070 in vbox


Ignore:
Timestamp:
Jan 20, 2009 8:42:03 AM (16 years ago)
Author:
vboxsync
Message:

NAT: 2nd patch from lawrencerust.
Corrects the behaviour of PORT command handling and PASV response.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/VBox/Devices/Network/slirp/tcp_subr.c

    r15919 r16070  
    669669                 * Need to emulate the PORT command
    670670                 */
     671                struct sockaddr_in addr;
     672                socklen_t addrlen = sizeof addr;
     673
     674                if ( getsockname(so->s,(struct sockaddr *)&addr,&addrlen))
     675                    return 1;
     676
    671677                x = sscanf(bptr, "ORT %u,%u,%u,%u,%u,%u\r\n%256[^\177]",
    672678                           &n1, &n2, &n3, &n4, &n5, &n6, buff);
     
    685691                n6 &= 0xff;
    686692
    687                 laddr = ntohl(so->so_faddr.s_addr);
     693                laddr = ntohl(addr.sin_addr.s_addr);
    688694
    689695                n1 = ((laddr >> 24) & 0xff);
     
    702708                 * Need to emulate the PASV response
    703709                 */
     710                struct sockaddr_in addr;
     711                socklen_t addrlen = sizeof addr;
     712
     713                if ( getsockname(so->s,(struct sockaddr *)&addr,&addrlen))
     714                    return 1;
     715
    704716                x = sscanf(bptr, "27 Entering Passive Mode (%u,%u,%u,%u,%u,%u)\r\n%256[^\177]",
    705717                           &n1, &n2, &n3, &n4, &n5, &n6, buff);
     
    718730                n6 &= 0xff;
    719731
    720                 laddr = ntohl(so->so_faddr.s_addr);
     732                laddr = ntohl(addr.sin_addr.s_addr);
    721733
    722734                n1 = ((laddr >> 24) & 0xff);
Note: See TracChangeset for help on using the changeset viewer.

© 2024 Oracle Support Privacy / Do Not Sell My Info Terms of Use Trademark Policy Automated Access Etiquette