Я переопределяю функцию dnsEnd () в EventListener:
@Override
public void dnsEnd(Call call, String domainName, List<InetAddress> inetAddressList) {
inetAddressList.forEach(address -> {
logger.debug("checking if url ({}) is in allowlist", address.toString());
if (!allowlist.contains(address)) {
call.cancel();
}
});
}
я знаю, в документации сказано не изменять параметры вызова и т.д. c:
«Все методы событий должны выполняться быстро, без внешней блокировки, не могут генерировать исключения, пытаться изменить параметры события или повторно входить в клиент. Любая запись ввода-вывода в файлы или сеть должна выполняться асинхронно».
но, поскольку меня не волнует вызов, если он пытается получить адрес вне разрешенного списка, я не вижу проблемы с этой реализацией.
Я хочу знать, есть ли у кого-нибудь опыт с этим, и почему это может быть проблемой? Я проверил это, и, похоже, он работает нормально.