| Предыдущий | Следующий |
| ENOTUNIQ | EBADFD |
EPROCUNAVAIL
EPROCUNAVAIL — ошибка ONC RPC в Darwin для процедуры, которую выбранная удалённая программа не может предоставить. Программа RPC и её версия могут быть допустимыми, а сообщение RPC — принятым, но номер proc, указанный вызовом, не поддерживается этой версией программы.
RFC 5531 отличает PROC_UNAVAIL от PROG_UNAVAIL и PROG_MISMATCH. Это различие важно при диагностике: если программа отсутствует, проверяйте регистрацию и маршрутизацию; если несовместима её версия, исследуйте возвращённый диапазон версий; если недоступна только процедура, проверьте номер процедуры клиента и контракт интерфейса для фактически выбранной версии.
Последовательность диагностики
- Запишите номер программы RPC, версию программы, номер процедуры, транспорт, конечную точку и
xid. Для этого кода номер процедуры является обязательным диагностическим данным. - Сравните сгенерированные заглушки RPC или определения интерфейса клиента с реализацией сервера, развёрнутой в целевой конечной точке.
- Проверьте, не исключает ли служба процедуру намеренно в выбранной версии и не направляет ли прокси совместимости запрос к реализации с сокращённой поверхностью API.
- Не рассматривайте код как ошибку повреждённых аргументов.
GARBAGE_ARGSозначает, что процедура не может декодировать параметры, аPROC_UNAVAIL— что сама процедура не поддерживается.
Часто смешиваемые результаты RPC
EPROGUNAVAIL: запрошенная программа не экспортируется.EPROGMISMATCH: программа доступна, но запрошенная версия не поддерживается.EPROCUNAVAIL: программа и версия выбраны, но запрошенная процедура не реализована.
Ссылки
- Apple XNU: errno.h
- RFC 5531: PROC_UNAVAIL, GARBAGE_ARGS и поля вызова RPC
- RFC 4506: описания интерфейсов XDR
Нужно найти другой код? Найти другой код состояния или ошибки.