Ignore:
Timestamp:
Jan 25, 2007, 9:23:31 PM (15 years ago)
Author:
joshe
Message:

Fix a case where NAT-PMP could falsely report a mapped port.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/natpmp.c

    r1429 r1434  
    7979    char               state;
    8080    unsigned int       active : 1;
     81    unsigned int       mapped : 1;
    8182    struct in_addr     dest;
    8283    int                newport;
     
    221222                TR_NAT_TRAVERSAL_UNMAPPING : TR_NAT_TRAVERSAL_DISABLED );
    222223    }
    223     else if( 0 < pmp->mappedport )
     224    else if( pmp->mapped )
    224225    {
    225226        ret = TR_NAT_TRAVERSAL_MAPPED;
     
    243244            case PMP_STATE_MAPPED:
    244245            default:
     246                /* if pmp->state is PMP_STATE_MAPPED then pmp->mapped
     247                   should be true */
    245248                assert( 0 );
    246249                ret = TR_NAT_TRAVERSAL_ERROR;
     
    355358                            killreq( &pmp->req );
    356359                            pmp->state = PMP_STATE_MAPPED;
     360                            pmp->mapped = 1;
    357361                            tr_dbg( "nat-pmp state add -> mapped with port %i",
    358362                                    pmp->mappedport);
     
    384388                            if( pmp->req->nobodyhome )
    385389                            {
     390                                pmp->mapped = 0;
    386391                                pmp->state = PMP_STATE_NOBODYHOME;
    387392                                tr_dbg( "nat-pmp state del -> nobodyhome on pulse" );
     
    389394                            else if( pmp->req->tmpfail )
    390395                            {
     396                                pmp->mapped = 0;
    391397                                pmp->state = PMP_STATE_TMPFAIL;
    392398                                tr_dbg( "nat-pmp state del -> err on pulse" );
     
    404410                                    pmp->req->port);
    405411                            tr_inf( "nat-pmp unmapped port %i", pmp->req->port );
     412                            pmp->mapped = 0;
    406413                            pmp->mappedport = -1;
    407414                            killreq( &pmp->req );
Note: See TracChangeset for help on using the changeset viewer.