Changeset 5527

Show
Ignore:
Timestamp:
05/20/08 16:53:09 (5 months ago)
Author:
morris
Message:

Send exactly as many bytes as the client requested, not how many bytes the file is currently... breaks downloading of files being uploaded somewhat, but this is how it works in 2.0 also so might as well

Files:

Legend:

Unmodified
Added
Removed
Modified
Copied
Moved
  • wired/trunk/wired/transfers.c

    r5505 r5527  
    621621        wi_lock_unlock(wd_status_lock); 
    622622 
    623         while(transfer->state == WD_TRANSFER_RUNNING) { 
     623        while(transfer->state == WD_TRANSFER_RUNNING && transfer->transferred < transfer->size) { 
    624624                /* read data */ 
    625625                bytes = read(fd, buffer, sizeof(buffer)); 
     
    648648                        break; 
    649649                } 
     650                 
     651                if((wi_file_offset_t) bytes > transfer->size - transfer->transferred) 
     652                        bytes = transfer->size - transfer->transferred; 
    650653 
    651654                /* write data */ 
     
    794797        wi_lock_unlock(wd_status_lock); 
    795798 
    796         while(transfer->state == WD_TRANSFER_RUNNING) { 
     799        while(transfer->state == WD_TRANSFER_RUNNING && transfer->transferred < transfer->size) { 
    797800                /* wait to read */ 
    798801                do { 
     
    833836                        break; 
    834837                } 
     838                 
     839                if((wi_file_offset_t) bytes > transfer->size - transfer->transferred) 
     840                        bytes = transfer->size - transfer->transferred; 
    835841 
    836842                /* write data */