Подключение из списка отключает рабочий сервер до проверки нового профиля

Chiusa
#332 0 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 1 giorno

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
3/5
Tempo stimato
1-2 giorni
Idoneità per principianti
75/100
Tipo di issue
Bug
Chiarezza
Specificata chiaramente
Stato di attività
Attiva
Stack tecnologico
csharp
Ambito
backend, testing

Direzione di ricerca

Read ConnectionsViewModel.cs around ConnectTo (lines 267–287) and ConnectionManager.cs around ConnectAsync (lines 234–235), then inspect the existing tests for the list connection command. Add a test using a fake engine where profile A is connected and incompatible profile B is selected; done means B reports the preset error while A remains connected.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

bug network

Приоритет P1 · milestone 0.4.1

Кнопка «Подключить» в списке серверов рвёт рабочую сессию, если новый профиль несовместим с текущим пресетом. Прямой путь в ConnectionManager уже исправлен в #266, но команда списка обходит этот порядок.

Воспроизведение

  1. Выбрать пресет маршрутизации, требующий sing-box, и подключить совместимый профиль A.
  2. В «Подключениях» нажать «Подключить» у профиля B, который требует Xray, например VLESS XHTTP.
  3. Получить ошибку несовместимого пресета. Активная сессия A уже отключена.

Причина и доказательство: кнопка вызывает ConnectToCommand (ConnectionsView.axaml:138). ConnectionsViewModel.ConnectTo (ConnectionsViewModel.cs:267–287) явно вызывает DisconnectAsync перед ConnectAsync. Проверка CreateFor внутри ConnectionManager.ConnectAsync (ConnectionManager.cs:234–235) стоит перед его собственным отключением, но на момент проверки A уже остановлен. Ошибка возвращается в EngineRegistry.cs:60. Проверено трассировкой кода, реальные подключения не запускались.

Ожидаемо: приложение показывает ошибку B и сохраняет подключение A.

Направление исправления: вызвать проверенный путь переключения ConnectionManager без предварительного DisconnectAsync. Добавить тест команды списка с несовместимым B и рабочим A на фейковом движке.

Связано: #266, #141.

Аудит ffa65648867139f9e45c15f4b635a83c1ff52c1b.

Lingua principale
C#
Stelle
5
Fork
1
Merge medio
30m
PR unite (30g)
171

Preparare l'ambiente

Questo progetto non fornisce container di sviluppo, Dockerfile né guida per i contributori, quindi l'ambiente è a tuo carico: parti dal suo README e consulta la nostra guida al primo contributo per i passaggi generali.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di endercodezz/BYDLO

Tutte le issue di endercodezz/BYDLO

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.