Changeset 2552 for trunk/libtransmission/net.c
- Timestamp:
- Jul 30, 2007, 3:27:52 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/net.c
r2544 r2552 57 57 } 58 58 59 static tr_thread_t resolveThread;60 static tr_lock_t resolveLock;61 static tr_cond_t resolveCond;62 static volatile int resolveDie;59 static tr_thread_t * resolveThread; 60 static tr_lock_t * resolveLock; 61 static tr_cond_t * resolveCond; 62 static volatile int resolveDie; 63 63 static tr_resolve_t * resolveQueue; 64 64 … … 86 86 resolveDie = 0; 87 87 resolveQueue = NULL; 88 tr_lockInit( &resolveLock);89 tr_condInit( &resolveCond);90 tr_threadCreate( &resolveThread,resolveFunc, NULL, "resolve" );88 resolveLock = tr_lockNew( ); 89 resolveCond = tr_condNew( ); 90 resolveThread = tr_threadNew( resolveFunc, NULL, "resolve" ); 91 91 } 92 92 … … 100 100 void tr_netResolveThreadClose() 101 101 { 102 tr_lockLock( &resolveLock );102 tr_lockLock( resolveLock ); 103 103 resolveDie = 1; 104 tr_lockUnlock( &resolveLock );105 tr_condSignal( &resolveCond );104 tr_lockUnlock( resolveLock ); 105 tr_condSignal( resolveCond ); 106 106 tr_wait( 200 ); 107 107 } … … 114 114 tr_resolve_t * tr_netResolveInit( const char * address ) 115 115 { 116 tr_resolve_t * r; 117 118 r = malloc( sizeof( tr_resolve_t ) ); 116 tr_resolve_t * r = tr_new0( tr_resolve_t, 1 ); 119 117 r->status = TR_NET_WAIT; 120 118 r->address = strdup( address ); … … 122 120 r->next = NULL; 123 121 124 tr_lockLock( &resolveLock );122 tr_lockLock( resolveLock ); 125 123 if( !resolveQueue ) 126 124 { … … 133 131 iter->next = r; 134 132 } 135 tr_lockUnlock( &resolveLock );136 tr_condSignal( &resolveCond );133 tr_lockUnlock( resolveLock ); 134 tr_condSignal( resolveCond ); 137 135 138 136 return r; … … 148 146 tr_tristate_t ret; 149 147 150 tr_lockLock( &resolveLock );148 tr_lockLock( resolveLock ); 151 149 ret = r->status; 152 150 if( ret == TR_NET_OK ) … … 154 152 *addr = r->addr; 155 153 } 156 tr_lockUnlock( &resolveLock );154 tr_lockUnlock( resolveLock ); 157 155 158 156 return ret; … … 197 195 struct hostent * host; 198 196 199 tr_lockLock( &resolveLock );197 tr_lockLock( resolveLock ); 200 198 201 199 while( !resolveDie ) … … 203 201 if( !( r = resolveQueue ) ) 204 202 { 205 tr_condWait( &resolveCond, &resolveLock );203 tr_condWait( resolveCond, resolveLock ); 206 204 continue; 207 205 } 208 206 209 207 /* Blocking resolution */ 210 tr_lockUnlock( &resolveLock );208 tr_lockUnlock( resolveLock ); 211 209 host = gethostbyname( r->address ); 212 tr_lockLock( &resolveLock );210 tr_lockLock( resolveLock ); 213 211 214 212 if( host ) … … 227 225 228 226 /* Clean up */ 229 tr_lockUnlock( &resolveLock ); 230 tr_lockClose( &resolveLock ); 227 tr_lockUnlock( resolveLock ); 228 tr_lockFree( resolveLock ); 229 resolveLock = NULL; 231 230 while( ( r = resolveQueue ) ) 232 231 {
Note: See TracChangeset
for help on using the changeset viewer.