- I fixed several problems with the transfer progress meter. It showed the
wrong percentage for small files, most notable for <1000 bytes and could easily end up showing more than 100% at the end. It also didn't show any percentage, transfer size or estimated transfer times when transferring less than 100 bytes.
This commit is contained in:
		
							
								
								
									
										7
									
								
								CHANGES
									
									
									
									
									
								
							
							
						
						
									
										7
									
								
								CHANGES
									
									
									
									
									
								
							| @@ -6,6 +6,13 @@ | ||||
|  | ||||
|                                   Changelog | ||||
|  | ||||
| Daniel Stenberg (4 Nov 2009) | ||||
| - I fixed several problems with the transfer progress meter. It showed the | ||||
|   wrong percentage for small files, most notable for <1000 bytes and could | ||||
|   easily end up showing more than 100% at the end. It also didn't show any | ||||
|   percentage, transfer size or estimated transfer times when transferring | ||||
|   less than 100 bytes. | ||||
|  | ||||
| Version 7.19.7 (4 November 2009) | ||||
|  | ||||
| Daniel Stenberg (2 Nov 2009) | ||||
|   | ||||
| @@ -13,7 +13,7 @@ This release includes the following changes: | ||||
|  | ||||
| This release includes the following bugfixes: | ||||
|  | ||||
|  o  | ||||
|  o progress meter percentage and transfer time estimates fixes | ||||
|  | ||||
| This release includes the following known bugs: | ||||
|  | ||||
|   | ||||
| @@ -371,20 +371,28 @@ int Curl_pgrsUpdate(struct connectdata *conn) | ||||
|  | ||||
|     /* Figure out the estimated time of arrival for the upload */ | ||||
|     if((data->progress.flags & PGRS_UL_SIZE_KNOWN)  && | ||||
|        (data->progress.ulspeed > CURL_OFF_T_C(0)) && | ||||
|        (data->progress.size_ul > CURL_OFF_T_C(100)) ) { | ||||
|        (data->progress.ulspeed > CURL_OFF_T_C(0))) { | ||||
|       ulestimate = data->progress.size_ul / data->progress.ulspeed; | ||||
|  | ||||
|       if(data->progress.size_ul > CURL_OFF_T_C(10000) ) | ||||
|         ulpercen = data->progress.uploaded / | ||||
|           (data->progress.size_ul/CURL_OFF_T_C(100)); | ||||
|       else | ||||
|         ulpercen = (data->progress.uploaded*100) / | ||||
|           data->progress.size_ul; | ||||
|     } | ||||
|  | ||||
|     /* ... and the download */ | ||||
|     if((data->progress.flags & PGRS_DL_SIZE_KNOWN) && | ||||
|        (data->progress.dlspeed > CURL_OFF_T_C(0)) && | ||||
|        (data->progress.size_dl > CURL_OFF_T_C(100))) { | ||||
|        (data->progress.dlspeed > CURL_OFF_T_C(0)) ) { | ||||
|       dlestimate = data->progress.size_dl / data->progress.dlspeed; | ||||
|  | ||||
|       if(data->progress.size_dl > CURL_OFF_T_C(10000)) | ||||
|         dlpercen = data->progress.downloaded / | ||||
|           (data->progress.size_dl/CURL_OFF_T_C(100)); | ||||
|       else | ||||
|         dlpercen = (data->progress.downloaded*100) / | ||||
|           data->progress.size_dl; | ||||
|     } | ||||
|  | ||||
|     /* Now figure out which of them is slower and use that one for the | ||||
| @@ -407,9 +415,11 @@ int Curl_pgrsUpdate(struct connectdata *conn) | ||||
|     total_transfer = data->progress.downloaded + data->progress.uploaded; | ||||
|  | ||||
|     /* Get the percentage of data transfered so far */ | ||||
|     if(total_expected_transfer > CURL_OFF_T_C(100)) | ||||
|     if(total_expected_transfer > CURL_OFF_T_C(10000)) | ||||
|       total_percen = total_transfer / | ||||
|         (total_expected_transfer/CURL_OFF_T_C(100)); | ||||
|     else if(total_expected_transfer > 0) | ||||
|       total_percen = (total_transfer*100) / total_expected_transfer; | ||||
|  | ||||
|     fprintf(data->set.err, | ||||
|             "\r" | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Daniel Stenberg
					Daniel Stenberg