[PR #924] [MERGED] fix: диагностика ошибок прав доступа и некорректного адреса при запуске #73

Closed
opened 2026-07-19 11:34:39 +03:00 by mirror-bot · 0 comments

📋 Pull Request Information

Original PR: https://github.com/Flowseal/tg-ws-proxy/pull/924
Author: @f4rceful
Created: 5/31/2026
Status: ✅ Merged
Merged: 6/17/2026
Merged by: @Flowseal

Base: main ← Head: fix/listen-error-diagnostics


📝 Commits (2)

  • f27bf27 fix: diagnose permission and bad-address bind failures on startup
  • d72bf7c Merge branch 'main' into fix/listen-error-diagnostics

📊 Changes

3 files changed (+63 additions, -14 deletions)

View changed files

📝 macos.py (+4 -7)
➕ utils/diagnostics.py (+55 -0)
📝 utils/tray_common.py (+4 -7)

📄 Description

## Что сделано

  • Добавлен независимый от зависимостей классификатор diagnose_listen_error() в utils/diagnostics.py, который сопоставляет OSError привязки сокета с понятными пользователю сообщениями: порт занят, доступ запрещён или некорректный/недоступный адрес.
  • Классификатор подключён к обоим обработчикам падений при запуске — utils/tray_common.py (трей Windows/Linux) и macos.py (macOS), — поэтому ошибки помимо «порт занят» теперь показывают подсказку, а не приводят к молчаливому падению.

Зачем

Раньше обработчики падений распознавали только «порт уже используется». Другие частые ошибки привязки оставались без диагностики:

  • #878 — доступ запрещён (Errno 13 / WSAEACCES 10013)
  • #903 — некорректный адрес (WinError 10014 / WSAEFAULT)

Классификатор покрывает POSIX-коды errno и WinSock-коды Windows (10013/10014/10048/10049) и возвращает None для несвязанных ошибок, чтобы вызывающий код сохранял прежнюю общую обработку.

Как проверить

  • py_compile для utils/diagnostics.py, utils/tray_common.py, macos.py — без ошибок.
  • Занять порт 1443 другим процессом и запустить прокси в трее — вместо молчаливого падения появится подсказка «порт занят».
  • Локально проверено юнит-тестами: EADDRINUSE -> порт занят, WSAEADDRINUSE -> порт занят, EACCES -> доступ запрещён (#878), WSAEFAULT -> некорректный адрес (#903), EADDRNOTAVAIL -> некорректный адрес, не-OSError -> None, несвязанный OSError (ENOENT) -> None.

🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/Flowseal/tg-ws-proxy/pull/924 **Author:** [@f4rceful](https://github.com/f4rceful) **Created:** 5/31/2026 **Status:** ✅ Merged **Merged:** 6/17/2026 **Merged by:** [@Flowseal](https://github.com/Flowseal) **Base:** `main` ← **Head:** `fix/listen-error-diagnostics` --- ### 📝 Commits (2) - [`f27bf27`](https://github.com/Flowseal/tg-ws-proxy/commit/f27bf274134b61f86e67d5e3df45f8351e9fcafb) fix: diagnose permission and bad-address bind failures on startup - [`d72bf7c`](https://github.com/Flowseal/tg-ws-proxy/commit/d72bf7c0474895aaf66243449dd7cdf8c692d5c1) Merge branch 'main' into fix/listen-error-diagnostics ### 📊 Changes **3 files changed** (+63 additions, -14 deletions) <details> <summary>View changed files</summary> 📝 `macos.py` (+4 -7) ➕ `utils/diagnostics.py` (+55 -0) 📝 `utils/tray_common.py` (+4 -7) </details> ### 📄 Description ## Что сделано - Добавлен независимый от зависимостей классификатор `diagnose_listen_error()` в `utils/diagnostics.py`, который сопоставляет `OSError` привязки сокета с понятными пользователю сообщениями: **порт занят**, **доступ запрещён** или **некорректный/недоступный адрес**. - Классификатор подключён к обоим обработчикам падений при запуске — `utils/tray_common.py` (трей Windows/Linux) и `macos.py` (macOS), — поэтому ошибки помимо «порт занят» теперь показывают подсказку, а не приводят к молчаливому падению. ## Зачем Раньше обработчики падений распознавали только «порт уже используется». Другие частые ошибки привязки оставались без диагностики: - **#878** — доступ запрещён (`Errno 13` / WSAEACCES `10013`) - **#903** — некорректный адрес (`WinError 10014` / WSAEFAULT) Классификатор покрывает POSIX-коды `errno` и WinSock-коды Windows (`10013`/`10014`/`10048`/`10049`) и возвращает `None` для несвязанных ошибок, чтобы вызывающий код сохранял прежнюю общую обработку. ## Как проверить - `py_compile` для `utils/diagnostics.py`, `utils/tray_common.py`, `macos.py` — без ошибок. - Занять порт 1443 другим процессом и запустить прокси в трее — вместо молчаливого падения появится подсказка «порт занят». - Локально проверено юнит-тестами: EADDRINUSE -> порт занят, WSAEADDRINUSE -> порт занят, EACCES -> доступ запрещён (#878), WSAEFAULT -> некорректный адрес (#903), EADDRNOTAVAIL -> некорректный адрес, не-OSError -> None, несвязанный OSError (ENOENT) -> None. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
mirror-bot added the pull-request label 2026-07-19 11:34:39 +03:00
mirror-bot changed title from [PR #924] [MERGED] fix: диагностика ошибок прав доступа и некорректного адреса при запуске to [PR #924] fix: диагностика ошибок прав доступа и некорректного адреса при запуске 2026-07-20 04:11:07 +03:00
mirror-bot changed title from [PR #924] fix: диагностика ошибок прав доступа и некорректного адреса при запуске to [PR #924] [MERGED] fix: диагностика ошибок прав доступа и некорректного адреса при запуске 2026-07-20 23:14:57 +03:00
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: Utilities/tg-ws-proxy#73