Ticket #5923: 5912.patch

File 5912.patch, 1.6 KB (added by x190, 7 years ago)
  • libtransmission/webseed.c

    old new  
    161161      const uint32_t offset_end = data->block_offset + len;
    162162      tr_cache * cache = data->session->cache;
    163163      const tr_piece_index_t piece = data->piece_index;
    164 
    165       while (len > 0)
    166         {
    167           const uint32_t bytes_this_pass = MIN (len, block_size);
    168           tr_cacheWriteBlock (cache, tor, piece, offset_end - len, bytes_this_pass, buf);
    169           len -= bytes_this_pass;
    170         }
     164     
     165      if (!tr_torrentPieceIsComplete (tor, piece))
     166        {
     167          while (len > 0)
     168            {
     169              const uint32_t bytes_this_pass = MIN (len, block_size);
     170              tr_cacheWriteBlock (cache, tor, piece, offset_end - len, bytes_this_pass, buf);
     171              len -= bytes_this_pass;
     172            }
    171173
    172174      fire_client_got_blocks (tor, w, data->block_index, data->count);
    173175    }
     
    408410          evbuffer_free (t->content);
    409411          tr_free (t);
    410412        }
    411         else
     413      else
    412414        {
    413415          const uint32_t bytes_done = t->blocks_done * tor->blockSize;
    414416          const uint32_t buf_len = evbuffer_get_length (t->content);
     
    420422              t->response_code = 0;
    421423              task_request_next_chunk (t);
    422424            }
    423             else
     425          else
    424426            {
    425               if (buf_len)
     427              if (buf_len && !tr_torrentPieceIsComplete (tor, t->piece_index))
    426428                {
    427429                  /* on_content_changed () will not write a block if it is smaller than
    428430                     the torrent's block size, i.e. the torrent's very last block */