Title: Fix DownloadManager hanging on stalled connections by bitcoin3us · Pull Request #98 · MicroPythonOS/MicroPythonOS · GitHub
Open Graph Title: Fix DownloadManager hanging on stalled connections by bitcoin3us · Pull Request #98 · MicroPythonOS/MicroPythonOS
X Title: Fix DownloadManager hanging on stalled connections by bitcoin3us · Pull Request #98 · MicroPythonOS/MicroPythonOS
Description: Summary Added connection timeout to session.get() in DownloadManager._download_url_async() Previously only individual chunk reads had a timeout (_CHUNK_TIMEOUT_SECONDS), but the initial TCP/TLS connection had none On ESP32 devices with intermittent WiFi, a stalled connection would hang the entire async balance fetch loop forever, freezing the wallet UI Root cause session.get(url, headers=headers) at line 118 of download_manager.py had no timeout parameter. If the TLS handshake or TCP connection stalled, this await would never return, blocking the calling coroutine permanently. Fix Pass the existing _CHUNK_TIMEOUT_SECONDS (10s) as the timeout for session.get(), so stalled connections fail gracefully and the caller's retry logic can recover. Test plan Verify normal downloads still work (balance fetch, payments fetch) Verify that a stalled connection times out after 10s instead of hanging Verify the wallet recovers on the next fetch cycle after a timeout 🤖 Generated with Claude Code
Open Graph Description: Summary Added connection timeout to session.get() in DownloadManager._download_url_async() Previously only individual chunk reads had a timeout (_CHUNK_TIMEOUT_SECONDS), but the initial TCP/TLS co...
X Description: Summary Added connection timeout to session.get() in DownloadManager._download_url_async() Previously only individual chunk reads had a timeout (_CHUNK_TIMEOUT_SECONDS), but the initial TCP/TLS co...
Opengraph URL: https://github.com/MicroPythonOS/MicroPythonOS/pull/98
X: @github
Domain: github.com
| route-pattern | /:user_id/:repository/pull/:id/files(.:format) |
| route-controller | pull_requests |
| route-action | files |
| fetch-nonce | v2:762a1e3a-aae9-f1ae-72e5-6e99fd607f5b |
| current-catalog-service-hash | ae870bc5e265a340912cde392f23dad3671a0a881730ffdadd82f2f57d81641b |
| request-id | BBCE:2C9FC7:28F0DAE:37092ED:6A53A678 |
| html-safe-nonce | d9dc06e1686cbe6adf0b2f9da1b12c7113fb0d37797cc5daa42bab2ea2be9e6e |
| visitor-payload | eyJyZWZlcnJlciI6IiIsInJlcXVlc3RfaWQiOiJCQkNFOjJDOUZDNzoyOEYwREFFOjM3MDkyRUQ6NkE1M0E2NzgiLCJ2aXNpdG9yX2lkIjoiNzQ4OTM0Mjc1MTY2ODE1MTkyOCIsInJlZ2lvbl9lZGdlIjoiaWFkIiwicmVnaW9uX3JlbmRlciI6ImlhZCJ9 |
| visitor-hmac | e08f606da299638e09d262064de1fa5ce6761af2d86212b9ff2c681eca4441fb |
| hovercard-subject-tag | pull_request:3462104264 |
| github-keyboard-shortcuts | repository,pull-request-list,pull-request-conversation,pull-request-files-changed,copilot |
| google-site-verification | Apib7-x98H0j5cPqHWwSMm6dNU4GmODRoqxLiDzdx9I |
| octolytics-url | https://collector.github.com/github/collect |
| analytics-location | / |
| fb:app_id | 1401488693436528 |
| apple-itunes-app | app-id=1477376905, app-argument=https://github.com/MicroPythonOS/MicroPythonOS/pull/98/files |
| twitter:image | https://avatars.githubusercontent.com/u/115934595?s=400&v=4 |
| twitter:card | summary_large_image |
| og:image | https://avatars.githubusercontent.com/u/115934595?s=400&v=4 |
| og:image:alt | Summary Added connection timeout to session.get() in DownloadManager._download_url_async() Previously only individual chunk reads had a timeout (_CHUNK_TIMEOUT_SECONDS), but the initial TCP/TLS co... |
| og:site_name | GitHub |
| og:type | object |
| hostname | github.com |
| expected-hostname | github.com |
| None | b9a586c06a05a7a86fc7e3f4dbd03e42f6869085879aa184aa6369456dbd50fb |
| turbo-cache-control | no-preview |
| diff-view | unified |
| go-import | github.com/MicroPythonOS/MicroPythonOS git https://github.com/MicroPythonOS/MicroPythonOS.git |
| octolytics-dimension-user_id | 213598128 |
| octolytics-dimension-user_login | MicroPythonOS |
| octolytics-dimension-repository_id | 975472483 |
| octolytics-dimension-repository_nwo | MicroPythonOS/MicroPythonOS |
| octolytics-dimension-repository_public | true |
| octolytics-dimension-repository_is_fork | false |
| octolytics-dimension-repository_network_root_id | 975472483 |
| octolytics-dimension-repository_network_root_nwo | MicroPythonOS/MicroPythonOS |
| turbo-body-classes | logged-out env-production page-responsive |
| disable-turbo | true |
| browser-stats-url | https://api.github.com/_private/browser/stats |
| browser-errors-url | https://api.github.com/_private/browser/errors |
| release | 07a982c1d40157c619b364352b704c3ce66bb332 |
| ui-target | full |
| theme-color | #1e2327 |
| color-scheme | light dark |
Links:
Viewport: width=device-width