| Предыдущий | Следующий |
| EDOTDOT | ENOTACTIVE |
ERPCMISMATCH
ERPCMISMATCH — Darwin errno для несовпадения версии протокола ONC RPC. Код относится к внешнему протоколу RPC, а не к версии конкретной удалённой программы, такой как NFS, NIS или другая служба RPC. В ONC RPC версии 2 тело вызова содержит отдельное поле rpcvers; RFC 5531 требует, чтобы оно имело значение 2.
Протокол отличает этот случай от ошибок после принятия вызова. Ответ RPC с RPC_MISMATCH отклоняет сообщение, поскольку сервер не может работать с версией протокола RPC вызывающей стороны, и содержит минимальную и максимальную поддерживаемые версии RPC. Поэтому Darwin ERPCMISMATCH нельзя подменять кодом EPROGMISMATCH, относящимся к версии запрошенной удалённой программы.
Что проверить
- Сохраните отклонённый ответ RPC вместе с минимальным и максимальным значениями версии из
RPC_MISMATCH. Эти значения являются конкретным доказательством возможностей другой стороны. - Отдельно запишите программу RPC, версию программы, номер процедуры, транспорт и конечную точку. Эти поля не заменяют версию протокола RPC.
- Убедитесь, что достигнута предполагаемая конечная точка ONC RPC. Неправильный посредник, устаревшая служба или другой компонент, говорящий по протоколу, может вызвать несовместимость, даже если ожидаемый прикладной сервер поддерживает нужную службу.
- Не меняйте версию удалённой программы только из-за этого кода в журнале. Изменение версии программы устраняет
EPROGMISMATCH, а не отказ сетевого протокола RPC.
Связанные статусы
ERPCMISMATCH: несовместима сама версия протокола RPC.EPROGMISMATCH: программа RPC существует, но не поддерживает запрошенную версию программы.EPROGUNAVAIL: удалённая конечная точка не экспортирует запрошенную программу.
Ссылки
- Apple XNU: errno.h
- RFC 5531: rpcvers, RPC_MISMATCH и отклонённые ответы
- RFC 4506: представление XDR, используемое ONC RPC
Нужно найти другой код? Найти другой код состояния или ошибки.
