Changeset 3674 for trunk/libtransmission/fdlimit.c
- Timestamp:
- Nov 1, 2007, 1:47:32 PM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/libtransmission/fdlimit.c
r3666 r3674 90 90 enum 91 91 { 92 TR_MAX_SOCKETS = 1024, 93 92 94 TR_MAX_OPEN_FILES = 16, /* real files, not sockets */ 93 95 … … 126 128 { 127 129 struct tr_openfile * file = &gFd->open[i]; 128 char * dir;129 130 int flags; 130 131 … … 132 133 133 134 /* create subfolders, if any */ 134 dir = dirname( tr_strdup( filename ) ); 135 if( write && tr_mkdirp( dir, 0700 ) ) { 136 free( dir ); 137 return tr_ioErrorFromErrno( ); 135 if( write ) { 136 char * dir = dirname( tr_strdup( filename ) ); 137 const int val = tr_mkdirp( dir, 0700 ); 138 tr_free( dir ); 139 if( val ) 140 return tr_ioErrorFromErrno( ); 138 141 } 139 142 … … 145 148 errno = 0; 146 149 file->fd = open( filename, flags, 0600 ); 147 free( dir );148 150 if( file->fd < 0 ) { 149 151 if( errno ) { … … 233 235 for( ;; ) 234 236 { 235 uint64_t date = tr_date( ) + 1;237 uint64_t date = tr_date( ) + 1; 236 238 winner = -1; 237 239 … … 281 283 dbgmsg( "checking out '%s' in slot %d", filename, winner ); 282 284 o->isCheckedOut = 1; 283 o->date = tr_date( );285 o->date = tr_date( ); 284 286 tr_lockUnlock( gFd->lock ); 285 287 return o->fd; … … 296 298 if( o->fd == file ) { 297 299 dbgmsg( "releasing file '%s' in slot #%d", o->filename, i ); 298 if( o->isWritable ) 299 fsync( o->fd ); /* fflush */ 300 fsync( o->fd ); 300 301 o->isCheckedOut = 0; 301 302 break; … … 329 330 330 331 int 331 tr_fdSocketCreate( int type, int priority)332 tr_fdSocketCreate( int type, int isReserved ) 332 333 { 333 334 int s = -1; 334 335 tr_lockLock( gFd->lock ); 335 336 336 if( priority&& gFd->reserved >= TR_RESERVED_FDS )337 priority= FALSE;338 339 if( priority|| ( gFd->normal < gFd->normalMax ) )337 if( isReserved && gFd->reserved >= TR_RESERVED_FDS ) 338 isReserved = FALSE; 339 340 if( isReserved || ( gFd->normal < gFd->normalMax ) ) 340 341 if( ( s = socket( AF_INET, type, 0 ) ) < 0 ) 341 342 tr_err( "Couldn't create socket (%s)", strerror( sockerrno ) ); … … 343 344 if( s > -1 ) 344 345 { 345 setSocketPriority( s, priority);346 347 if( priority)346 setSocketPriority( s, isReserved ); 347 348 if( isReserved ) 348 349 ++gFd->reserved; 349 350 else … … 376 377 if( s > -1 ) 377 378 { 378 setSocketPriority( s, 0);379 setSocketPriority( s, FALSE ); 379 380 *addr = sock.sin_addr; 380 381 *port = sock.sin_port; … … 424 425 tr_fdInit( void ) 425 426 { 426 int i, j, s[ 4096];427 int i, j, s[TR_MAX_SOCKETS]; 427 428 428 429 assert( gFd == NULL ); … … 433 434 434 435 /* count the max number of sockets we can use */ 435 for( i=0; i< 4096; ++i )436 for( i=0; i<TR_MAX_SOCKETS; ++i ) 436 437 if( ( s[i] = socket( AF_INET, SOCK_STREAM, 0 ) ) < 0 ) 437 438 break;
Note: See TracChangeset
for help on using the changeset viewer.