Handle stream timeouts properly, for slow HTTP/HTTPS links (#3752)
This patch fixes update timeouts (error #6) on slow HTTP/HTTPS links.
This commit is contained in:
		
							parent
							
								
									76afaf2d6b
								
							
						
					
					
						commit
						e4b008e712
					
				| @ -323,6 +323,8 @@ size_t UpdateClass::write(uint8_t *data, size_t len) { | ||||
| size_t UpdateClass::writeStream(Stream &data) { | ||||
|     size_t written = 0; | ||||
|     size_t toRead = 0; | ||||
|     int timeout_failures = 0; | ||||
| 
 | ||||
|     if(hasError() || !isRunning()) | ||||
|         return 0; | ||||
| 
 | ||||
| @ -344,15 +346,24 @@ size_t UpdateClass::writeStream(Stream &data) { | ||||
|             bytesToRead = remaining(); | ||||
|         } | ||||
| 
 | ||||
|         toRead = data.readBytes(_buffer + _bufferLen,  bytesToRead); | ||||
|         if(toRead == 0) { //Timeout
 | ||||
|             delay(100); | ||||
|             toRead = data.readBytes(_buffer + _bufferLen, bytesToRead); | ||||
|             if(toRead == 0) { //Timeout
 | ||||
|                 _abort(UPDATE_ERROR_STREAM); | ||||
|                 return written; | ||||
|         /* 
 | ||||
|         Init read&timeout counters and try to read, if read failed, increase counter, | ||||
|         wait 100ms and try to read again. If counter > 300 (30 sec), give up/abort | ||||
|         */ | ||||
|         toRead = 0; | ||||
|         timeout_failures = 0; | ||||
|         while(!toRead) { | ||||
|             toRead = data.readBytes(_buffer + _bufferLen,  bytesToRead); | ||||
|             if(toRead == 0) { | ||||
|                 timeout_failures++; | ||||
|                 if (timeout_failures >= 300) { | ||||
|                     _abort(UPDATE_ERROR_STREAM); | ||||
|                     return written; | ||||
|                 } | ||||
|                 delay(100); | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
|         if(_ledPin != -1) { | ||||
|             digitalWrite(_ledPin, !_ledOn); // Switch LED off
 | ||||
|         } | ||||
|  | ||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user