我在EventListener中重写dnsEnd()函数:
@Override
public void dnsEnd(Call call, String domainName, List<InetAddress> inetAddressList) {
inetAddressList.forEach(address -> {
logger.debug("checking if url ({}) is in whitelist", address.toString());
if (!whitelist.contains(address)) {
call.cancel();
}
});
}
我知道,在documentation中说不更改呼叫参数等:
“所有事件方法必须快速执行,没有外部锁定,不能抛出异常,不能使事件参数发生变化,或者重新进入客户端。任何IO-写入文件或网络都应异步完成。”] >
但是,由于我不在乎该呼叫是否尝试到达白名单之外的地址,因此我看不到此实现的问题。
我想知道是否有人对此有经验,为什么这可能是个问题?我对此进行了测试,看来效果很好。
我在EventListener中重写dnsEnd()函数:@Override public void dnsEnd(Call call,String domainName,List
这很好,很安全。可能最奇怪的结果是,已取消事件将由已经处理DNS事件的线程触发。