Browse Source

[downloader] Allow underlying downloads to provide detailed job progress

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 6 years ago
parent
commit
a258b0897b
1 changed files with 9 additions and 2 deletions
  1. 9
    2
      src/core/downloader.c

+ 9
- 2
src/core/downloader.c View File

@@ -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
 }

Loading…
Cancel
Save