mirror of
https://github.com/transmission/transmission
synced 2024-12-24 08:43:27 +00:00
Remove natpmp and upnp locks and rely on the shared lock.
This commit is contained in:
parent
f67ad8cf47
commit
c4ad02aaf3
4 changed files with 6 additions and 49 deletions
|
@ -82,7 +82,6 @@ struct tr_natpmp_s
|
|||
struct in_addr dest;
|
||||
int newport;
|
||||
int mappedport;
|
||||
tr_lock_t lock;
|
||||
uint64_t renew;
|
||||
tr_natpmp_req_t * req;
|
||||
tr_natpmp_uptime_t uptime;
|
||||
|
@ -149,16 +148,12 @@ tr_natpmpInit()
|
|||
tr_dbg( "nat-pmp device is %s", addrstr );
|
||||
}
|
||||
|
||||
tr_lockInit( &pmp->lock );
|
||||
|
||||
return pmp;
|
||||
}
|
||||
|
||||
void
|
||||
tr_natpmpStart( tr_natpmp_t * pmp )
|
||||
{
|
||||
tr_lockLock( &pmp->lock );
|
||||
|
||||
if( !pmp->active )
|
||||
{
|
||||
tr_inf( "starting nat-pmp" );
|
||||
|
@ -168,15 +163,11 @@ tr_natpmpStart( tr_natpmp_t * pmp )
|
|||
pmp->mcastfd = mcastsetup();
|
||||
}
|
||||
}
|
||||
|
||||
tr_lockUnlock( &pmp->lock );
|
||||
}
|
||||
|
||||
void
|
||||
tr_natpmpStop( tr_natpmp_t * pmp )
|
||||
{
|
||||
tr_lockLock( &pmp->lock );
|
||||
|
||||
if( pmp->active )
|
||||
{
|
||||
tr_inf( "stopping nat-pmp" );
|
||||
|
@ -212,17 +203,12 @@ tr_natpmpStop( tr_natpmp_t * pmp )
|
|||
break;
|
||||
}
|
||||
}
|
||||
|
||||
tr_lockUnlock( &pmp->lock );
|
||||
}
|
||||
|
||||
int
|
||||
tr_natpmpStatus( tr_natpmp_t * pmp )
|
||||
{
|
||||
int ret;
|
||||
|
||||
tr_lockLock( &pmp->lock );
|
||||
|
||||
|
||||
if( !pmp->active )
|
||||
{
|
||||
|
@ -259,18 +245,14 @@ tr_natpmpStatus( tr_natpmp_t * pmp )
|
|||
}
|
||||
}
|
||||
|
||||
tr_lockUnlock( &pmp->lock );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
tr_natpmpForwardPort( tr_natpmp_t * pmp, int port )
|
||||
{
|
||||
tr_lockLock( &pmp->lock );
|
||||
tr_inf( "nat-pmp set port %i", port );
|
||||
pmp->newport = port;
|
||||
tr_lockUnlock( &pmp->lock );
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -280,17 +262,13 @@ tr_natpmpClose( tr_natpmp_t * pmp )
|
|||
tr_natpmpStop( pmp );
|
||||
tr_natpmpPulse( pmp, NULL );
|
||||
|
||||
tr_lockLock( &pmp->lock );
|
||||
killreq( &pmp->req );
|
||||
tr_lockClose( &pmp->lock );
|
||||
free( pmp );
|
||||
}
|
||||
|
||||
void
|
||||
tr_natpmpPulse( tr_natpmp_t * pmp, int * publicPort )
|
||||
{
|
||||
tr_lockLock( &pmp->lock );
|
||||
|
||||
if( 0 <= pmp->mcastfd )
|
||||
{
|
||||
mcastpulse( pmp );
|
||||
|
@ -460,8 +438,6 @@ tr_natpmpPulse( tr_natpmp_t * pmp, int * publicPort )
|
|||
{
|
||||
*publicPort = -1;
|
||||
}
|
||||
|
||||
tr_lockUnlock( &pmp->lock );
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
|
@ -48,7 +48,8 @@ void tr_sharedUnlock ( tr_shared_t * );
|
|||
/***********************************************************************
|
||||
* tr_sharedSetPort
|
||||
***********************************************************************
|
||||
* Changes the port for incoming connections
|
||||
* Changes the port for incoming connections. tr_sharedGetPublicPort
|
||||
* should be called with the shared lock held.
|
||||
**********************************************************************/
|
||||
void tr_sharedSetPort ( tr_shared_t *, int port );
|
||||
int tr_sharedGetPublicPort ( tr_shared_t * s );
|
||||
|
@ -56,7 +57,8 @@ int tr_sharedGetPublicPort ( tr_shared_t * s );
|
|||
/***********************************************************************
|
||||
* tr_sharedTraversalEnable, tr_sharedTraversalStatus
|
||||
***********************************************************************
|
||||
*
|
||||
* Enables/disables and retrieves the status of NAT traversal. Should
|
||||
* be called with the shared lock held.
|
||||
**********************************************************************/
|
||||
void tr_sharedTraversalEnable ( tr_shared_t *, int enable );
|
||||
int tr_sharedTraversalStatus ( tr_shared_t * );
|
||||
|
|
|
@ -83,7 +83,9 @@ void tr_setBindPort( tr_handle_t * h, int port )
|
|||
|
||||
void tr_natTraversalEnable( tr_handle_t * h, int enable )
|
||||
{
|
||||
tr_sharedLock( h->shared );
|
||||
tr_sharedTraversalEnable( h->shared, enable );
|
||||
tr_sharedUnlock( h->shared );
|
||||
}
|
||||
|
||||
tr_handle_status_t * tr_handleStatus( tr_handle_t * h )
|
||||
|
|
|
@ -90,7 +90,6 @@ struct tr_upnp_s
|
|||
unsigned int active : 1;
|
||||
unsigned int discovering : 1;
|
||||
tr_upnp_device_t * devices;
|
||||
tr_lock_t lock;
|
||||
};
|
||||
|
||||
static int
|
||||
|
@ -167,16 +166,12 @@ tr_upnpInit()
|
|||
upnp->infd = -1;
|
||||
upnp->outfd = -1;
|
||||
|
||||
tr_lockInit( &upnp->lock );
|
||||
|
||||
return upnp;
|
||||
}
|
||||
|
||||
void
|
||||
tr_upnpStart( tr_upnp_t * upnp )
|
||||
{
|
||||
tr_lockLock( &upnp->lock );
|
||||
|
||||
if( !upnp->active )
|
||||
{
|
||||
tr_inf( "starting upnp" );
|
||||
|
@ -186,15 +181,11 @@ tr_upnpStart( tr_upnp_t * upnp )
|
|||
upnp->lastdiscover = 0;
|
||||
upnp->lastdelay = SSDP_FIRST_DELAY / 2;
|
||||
}
|
||||
|
||||
tr_lockUnlock( &upnp->lock );
|
||||
}
|
||||
|
||||
void
|
||||
tr_upnpStop( tr_upnp_t * upnp )
|
||||
{
|
||||
tr_lockLock( &upnp->lock );
|
||||
|
||||
if( upnp->active )
|
||||
{
|
||||
tr_inf( "stopping upnp" );
|
||||
|
@ -202,8 +193,6 @@ tr_upnpStop( tr_upnp_t * upnp )
|
|||
killSock( &upnp->infd );
|
||||
killSock( &upnp->outfd );
|
||||
}
|
||||
|
||||
tr_lockUnlock( &upnp->lock );
|
||||
}
|
||||
|
||||
int
|
||||
|
@ -212,8 +201,6 @@ tr_upnpStatus( tr_upnp_t * upnp )
|
|||
tr_upnp_device_t * ii;
|
||||
int ret;
|
||||
|
||||
tr_lockLock( &upnp->lock );
|
||||
|
||||
if( !upnp->active )
|
||||
{
|
||||
ret = ( NULL == upnp->devices ?
|
||||
|
@ -240,18 +227,14 @@ tr_upnpStatus( tr_upnp_t * upnp )
|
|||
}
|
||||
}
|
||||
|
||||
tr_lockUnlock( &upnp->lock );
|
||||
|
||||
return ret;
|
||||
}
|
||||
|
||||
void
|
||||
tr_upnpForwardPort( tr_upnp_t * upnp, int port )
|
||||
{
|
||||
tr_lockLock( &upnp->lock );
|
||||
tr_dbg( "upnp port changed from %i to %i", upnp->port, port );
|
||||
upnp->port = port;
|
||||
tr_lockUnlock( &upnp->lock );
|
||||
}
|
||||
|
||||
void
|
||||
|
@ -259,13 +242,11 @@ tr_upnpClose( tr_upnp_t * upnp )
|
|||
{
|
||||
tr_upnpStop( upnp );
|
||||
|
||||
tr_lockLock( &upnp->lock );
|
||||
while( NULL != upnp->devices )
|
||||
{
|
||||
deviceRemove( &upnp->devices );
|
||||
}
|
||||
|
||||
tr_lockClose( &upnp->lock );
|
||||
free( upnp );
|
||||
}
|
||||
|
||||
|
@ -274,8 +255,6 @@ tr_upnpPulse( tr_upnp_t * upnp )
|
|||
{
|
||||
tr_upnp_device_t ** ii;
|
||||
|
||||
tr_lockLock( &upnp->lock );
|
||||
|
||||
if( upnp->active )
|
||||
{
|
||||
/* pulse on all known devices */
|
||||
|
@ -321,8 +300,6 @@ tr_upnpPulse( tr_upnp_t * upnp )
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
tr_lockUnlock( &upnp->lock );
|
||||
}
|
||||
|
||||
static int
|
||||
|
|
Loading…
Reference in a new issue