| Предыдущий | Следующий |
| EXFULL | EBADRQC |
ECONNRESET
Сброс прекратил состояние соединения
ECONNRESET означает, что соединение было сброшено, а не закрыто обычной последовательностью полузакрытия и FIN. В TCP обработка сброса удаляет состояние соединения, а ожидающие операции в очереди получают результат сброса; поэтому это существенно отличается от упорядоченного достижения конца потока.
Слова «другой стороной» в описании ошибки платформы не следует упрощать до утверждения «удалённое приложение намеренно закрыло соединение». Сброс может быть создан состоянием протокола, удалённым стеком, посредником или путём обработки ошибки. До определения виновной стороны приложению нужны данные о пакетах, конечных точках и времени.
Как отличить ошибку в журналах
- Запишите, возникла ли ошибка при чтении, записи или ожидающем подключении: один и тот же сброс на каждом из этих этапов имеет разные последствия для приложения.
- Сохраните четвёрку адресов и портов соединения, состояние протокола, байты, подтверждённые на прикладном уровне, и доступные журналы другой стороны или прокси за тот же интервал.
- Не путайте чтение потока нулевой длины после FIN со сбросом. Корректное закрытие и сброс требуют разных решений о повторе и воспроизведении операции.
Вопрос безопасного восстановления
До повторного подключения установите, была ли подтверждена прикладная операция. Семантика сброса TCP не сообщает приложению, был ли запрос обработан до транспортного сбоя.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.