Changeset 13112


Ignore:
Timestamp:
Dec 14, 2011, 5:58:23 AM (10 years ago)
Author:
jordan
Message:

(trunk libT) #4666 "webseed downloading never gets downloaded" -- fixed.

The webseed in question is downloading from an ubuntuone.com url. We ask for piece-sized ranges in a couple of different concurrent connections, and curl hints to the server that it's okay to gzip the response, or deflate it, or leave it raw. It looks like there's a bug in the server or in libcurl (or, somehow, Transmission) that's not compressing or decompressing these responses correctly -- we never get the right number of bytes in the response from libcurl. If we ask for the contents uncompressed, the download progresses towards completion.

As an aside, when testing this I noticed that deluge is a lot faster than Transmission on this torrent. In order for Transmission to reach parity here, webseed.c needs to know when it's appropriate to have more than 4 concurrent tasks and/or be able to request ranges > the torrent's piece size.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/libtransmission/web.c

    r12539 r13112  
    189189        curl_easy_setopt( e, CURLOPT_COOKIE, task->cookies );
    190190
    191     if( task->range )
     191    if( task->range != NULL ) {
    192192        curl_easy_setopt( e, CURLOPT_RANGE, task->range );
     193        /* don't bother asking the server to compress webseed fragments */
     194        curl_easy_setopt( e, CURLOPT_ENCODING, "identity" );
     195    }
    193196
    194197    return e;
Note: See TracChangeset for help on using the changeset viewer.