|
@@ -111,13 +111,20 @@ static void downloader_finished ( struct downloader *downloader, int rc ) {
|
111
|
111
|
*/
|
112
|
112
|
static int downloader_progress ( struct downloader *downloader,
|
113
|
113
|
struct job_progress *progress ) {
|
|
114
|
+ int rc;
|
|
115
|
+
|
|
116
|
+ /* Allow data transfer to provide an accurate description */
|
|
117
|
+ if ( ( rc = job_progress ( &downloader->xfer, progress ) ) != 0 )
|
|
118
|
+ return rc;
|
114
|
119
|
|
115
|
120
|
/* This is not entirely accurate, since downloaded data may
|
116
|
121
|
* arrive out of order (e.g. with multicast protocols), but
|
117
|
122
|
* it's a reasonable first approximation.
|
118
|
123
|
*/
|
119
|
|
- progress->completed = downloader->buffer.pos;
|
120
|
|
- progress->total = downloader->buffer.len;
|
|
124
|
+ if ( ! progress->total ) {
|
|
125
|
+ progress->completed = downloader->buffer.pos;
|
|
126
|
+ progress->total = downloader->buffer.len;
|
|
127
|
+ }
|
121
|
128
|
|
122
|
129
|
return 0;
|
123
|
130
|
}
|