Протокол UDP не поддерживает управляющих операций и перенаправляет вызовы своему элементу pr_ctloutput() непосредственно в протокол IP. У него есть простая процедура pr_ctlinput(), которая получает уведомление о любых асинхронных ошибках. Ошибки передаются любому сокету дейтаграмм с указанным местом назначения.
Лишь сокеты с местом назначения, зафиксированным вызовом connect, могут получить асинхронные уведомления об ошибках. Такие ошибки просто записываются в соответствующем сокете, и, если процесс выполняет системный вызов select или находится в состоянии сна в ожидании ввода, он пробуждается.
Когда сокет дейтаграмм UDP закрывается, вызывается процедура udp_detach(). Управляющий блок протокола и его содержимое просто удаляются функцией in_pcbdetach(); другой обработки не требуется.