| Предыдущий | Следующий |
| DNS_ERROR_UNSECURE_PACKET | DNS_ERROR_INVALID_TYPE |
DNS_REQUEST_PENDING
Ожидающий запрос не является ошибкой
DNS_REQUEST_PENDING — ожидаемый немедленный результат, когда DnsQueryEx завершит работу асинхронно. В этот момент окончательные DNS-записи ещё недоступны. Процедура завершения получает итоговый статус и список результатов: успех, отсутствие записей, RCODE, отмену или другую ошибку.
Главная проблема реализации — жизненный цикл. Microsoft указывает, что структуры результата запроса и отмены должны оставаться действительными до вызова callback. Освобождение контекста на стеке, повторное использование объекта результата для другого запроса или уничтожение владельца при отмене могут превратить обычное ожидание в use-after-free или двойное завершение.
Правильная обработка
- Сохраняйте контекст запроса, хранилище результата, состояние callback и дескриптор отмены до завершения.
- Обеспечьте, чтобы обычное завершение и отмена сходились в одном пути освобождения владения.
- Читайте записи только после callback и освобождайте возвращённые списки документированной функцией DNS API.
- Не отправляйте немедленный дубликат только потому, что первый вызов вернул pending; при необходимости применяйте deadline уровня приложения.
Ссылки
Нужно найти другой код? Найти другой код состояния или ошибки.
