Retry on HTTP/2 frame errors as long as it do is making progress

Ref #767
This commit is contained in:
Floris Bos 2023-12-26 16:09:21 +01:00
parent 26c9dc4dfb
commit b918a7ea6f
2 changed files with 5 additions and 3 deletions

View file

@ -8,8 +8,8 @@ OPTION (ENABLE_TELEMETRY "Enable sending telemetry" ON)
project(rpi-imager LANGUAGES CXX C) project(rpi-imager LANGUAGES CXX C)
set(IMAGER_VERSION_MAJOR 1) set(IMAGER_VERSION_MAJOR 1)
set(IMAGER_VERSION_MINOR 8) set(IMAGER_VERSION_MINOR 8)
set(IMAGER_VERSION_STR "${IMAGER_VERSION_MAJOR}.${IMAGER_VERSION_MINOR}.4") set(IMAGER_VERSION_STR "${IMAGER_VERSION_MAJOR}.${IMAGER_VERSION_MINOR}.5")
set(IMAGER_VERSION_CSV "${IMAGER_VERSION_MAJOR},${IMAGER_VERSION_MINOR},4,0") set(IMAGER_VERSION_CSV "${IMAGER_VERSION_MAJOR},${IMAGER_VERSION_MINOR},5,0")
add_definitions(-DIMAGER_VERSION_STR="${IMAGER_VERSION_STR}") add_definitions(-DIMAGER_VERSION_STR="${IMAGER_VERSION_STR}")
add_definitions(-DIMAGER_VERSION_CSV=${IMAGER_VERSION_CSV}) add_definitions(-DIMAGER_VERSION_CSV=${IMAGER_VERSION_CSV})
set(CMAKE_INCLUDE_CURRENT_DIR ON) set(CMAKE_INCLUDE_CURRENT_DIR ON)

View file

@ -412,7 +412,9 @@ void DownloadThread::run()
/* Deal with badly configured HTTP servers that terminate the connection quickly /* Deal with badly configured HTTP servers that terminate the connection quickly
if connections stalls for some seconds while kernel commits buffers to slow SD card. if connections stalls for some seconds while kernel commits buffers to slow SD card.
And also reconnect if we detect from our end that transfer stalled for more than one minute */ And also reconnect if we detect from our end that transfer stalled for more than one minute */
while (ret == CURLE_PARTIAL_FILE || ret == CURLE_OPERATION_TIMEDOUT || (ret == CURLE_RECV_ERROR && _lastDlNow != _lastFailureOffset) ) while (ret == CURLE_PARTIAL_FILE || ret == CURLE_OPERATION_TIMEDOUT
|| (ret == CURLE_HTTP2_STREAM && _lastDlNow != _lastFailureOffset)
|| (ret == CURLE_RECV_ERROR && _lastDlNow != _lastFailureOffset) )
{ {
time_t t = time(NULL); time_t t = time(NULL);
qDebug() << "HTTP connection lost. Time:" << t; qDebug() << "HTTP connection lost. Time:" << t;