| Предыдущий | Следующий |
| EBADR | ENOANO |
ECONNABORTED
Аварийное прерывание отличается от корректного закрытия
ECONNABORTED означает, что соединение было аварийно прервано программным обеспечением или локальным сетевым стеком. Это состояние транспортного сбоя, а не обычное уведомление о конце потока. Корректное закрытие TCP представляется обработкой FIN и может позволить прочитать буферизованные данные до достижения конца потока со стороны партнёра.
Ошибку не следует считать доказательством того, что удалённый процесс намеренно отклонил запрос. Локальная отмена, состояние протокола, нехватка ресурсов или обработка сети могут повлиять на решение стека отказаться от соединения.
Сохраняйте границу между уровнями
- Запишите системный вызов, обнаруживший ошибку, возраст соединения, количество успешно прочитанных и записанных байтов, а также инициировало ли приложение закрытие или отмену.
- Сопоставьте событие с состоянием сокета, обработчиками тайм-аутов, состоянием TLS или прокси и локальными сетевыми событиями, а не связывайте его сразу с удалённым приложением.
- Для запросов с побочными эффектами сохраните состояние подтверждения на уровне протокола до попытки повторного подключения и воспроизведения запроса.
Сравнение с близкими результатами
ECONNRESET означает обработку сброса, а ETIMEDOUT — отсутствие своевременного ответа. ECONNREFUSED обычно является активным отказом при установлении соединения, а не прерыванием уже используемого соединения.
Ссылки
- XNU: определения errno Darwin
- RFC 9293: аварийное прерывание и сброс TCP
- Руководство FreeBSD: errno(2)
Нужно найти другой код? Найти другой код состояния или ошибки.
