Changeset 4155
- Timestamp:
- Dec 13, 2007, 7:28:51 PM (14 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/natpmp.c
r4154 r4155 29 29 30 30 #define LIFETIME_SECS 3600 31 #define COMMAND_WAIT_SECS 8 31 32 32 33 #define KEY "Port Mapping (NAT-PMP): " … … 51 52 unsigned int hasDiscovered : 1; 52 53 time_t renewTime; 54 time_t commandTime; 53 55 tr_natpmp_state state; 54 56 natpmp_t natpmp; … … 90 92 } 91 93 94 static int 95 canSendCommand( const struct tr_natpmp * nat ) 96 { 97 return time(NULL) >= nat->commandTime; 98 } 99 100 static void 101 setCommandTime( struct tr_natpmp * nat ) 102 { 103 nat->commandTime = time(NULL) + COMMAND_WAIT_SECS; 104 } 105 92 106 int 93 107 tr_natpmpPulse( struct tr_natpmp * nat, int port, int isEnabled ) … … 103 117 nat->state = val < 0 ? TR_NATPMP_ERR : TR_NATPMP_RECV_PUB; 104 118 nat->hasDiscovered = 1; 105 } 106 107 if( nat->state == TR_NATPMP_RECV_PUB ) 119 setCommandTime( nat ); 120 } 121 122 if( ( nat->state == TR_NATPMP_RECV_PUB ) && canSendCommand( nat ) ) 108 123 { 109 124 natpmpresp_t response; … … 124 139 } 125 140 126 if( nat->state == TR_NATPMP_SEND_UNMAP)141 if( ( nat->state == TR_NATPMP_SEND_UNMAP ) && canSendCommand( nat ) ) 127 142 { 128 143 const int val = sendnewportmappingrequest( &nat->natpmp, NATPMP_PROTOCOL_TCP, nat->port, nat->port, 0 ); 129 144 logVal( "sendnewportmappingrequest", val ); 130 145 nat->state = val < 0 ? TR_NATPMP_ERR : TR_NATPMP_RECV_UNMAP; 146 setCommandTime( nat ); 131 147 } 132 148 … … 155 171 } 156 172 157 if( nat->state == TR_NATPMP_SEND_MAP)173 if( ( nat->state == TR_NATPMP_SEND_MAP ) && canSendCommand( nat ) ) 158 174 { 159 175 const int val = sendnewportmappingrequest( &nat->natpmp, NATPMP_PROTOCOL_TCP, port, port, LIFETIME_SECS ); 160 176 logVal( "sendnewportmappingrequest", val ); 161 177 nat->state = val < 0 ? TR_NATPMP_ERR : TR_NATPMP_RECV_MAP; 178 setCommandTime( nat ); 162 179 } 163 180
Note: See TracChangeset
for help on using the changeset viewer.