瀏覽代碼

[downloader] Allow underlying downloads to provide detailed job progress

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown 7 年之前
父節點
當前提交
a258b0897b
共有 1 個文件被更改,包括 9 次插入2 次删除
  1. 9
    2
      src/core/downloader.c

+ 9
- 2
src/core/downloader.c 查看文件

@@ -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…
取消
儲存