openssl - 为什么在 netty-tcnative 中没有卸载 certificateVerifierTask_class
问题描述
看了netty-tcnative的源码sslcontext.c,发现「certificateVerifierTask_class」是在「netty_internal_tcnative_SSLContext_JNI_OnLoad」方法中加载的</p>
jint netty_internal_tcnative_SSLContext_JNI_OnLoad(JNIEnv* env, const char* packagePrefix) {
.....
NETTY_JNI_UTIL_PREPEND(packagePrefix, "io/netty/internal/tcnative/CertificateVerifierTask", name, error);
NETTY_JNI_UTIL_LOAD_CLASS(env, certificateVerifierTask_class, name, error);
NETTY_JNI_UTIL_PREPEND(packagePrefix, "io/netty/internal/tcnative/CertificateVerifier;)V", name, error);
NETTY_JNI_UTIL_PREPEND("(J[[BLjava/lang/String;L", name, combinedName, error);
TCN_REASSIGN(name, combinedName);
NETTY_JNI_UTIL_GET_METHOD(env, certificateVerifierTask_class, certificateVerifierTask_init, "<init>", name, error);
.....
}
但是在方法「netty_internal_tcnative_SSLContext_JNI_OnUnLoad」中,这个类没有被卸载。
void netty_internal_tcnative_SSLContext_JNI_OnUnLoad(JNIEnv* env, const char* packagePrefix) {
NETTY_JNI_UTIL_UNLOAD_CLASS(env, sslTask_class);
NETTY_JNI_UTIL_UNLOAD_CLASS(env, certificateCallbackTask_class);
NETTY_JNI_UTIL_UNLOAD_CLASS(env, sslPrivateKeyMethodTask_class);
NETTY_JNI_UTIL_UNLOAD_CLASS(env, sslPrivateKeyMethodSignTask_class);
NETTY_JNI_UTIL_UNLOAD_CLASS(env, sslPrivateKeyMethodDecryptTask_class);
netty_jni_util_unregister_natives(env, packagePrefix, SSLCONTEXT_CLASSNAME);
}
卸载过程是不必要的吗?
解决方案
这实际上是一个错误......非常感谢我刚刚修复它https://github.com/netty/netty-tcnative/pull/637
推荐阅读
- asp.net-mvc - MVC 将文本框值绑定到模型中类列表中的属性以获取未知索引
- node.js - Node.js 获取函数的返回值并将其存储到变量中
- c# - 使用 OpenXML SDK 将包含注释的幻灯片从一个 PowerPoint 演示文稿复制到另一个
- javascript - 如何在 React 中显示子菜单链接
- firebase - Flutter Firebase Passwordless Authentication auth.isSignInWithEmailLink(link) 返回 false
- elasticsearch - 在 CapRover 上连接到 ElasticSearch 时出错
- testng - 未找到 TestNg 链接断开
- python - 使用 pyomo 的 SolveryFactory 使用 cplex 求解器在求解方法中解析日志文件参数的文件路径
- javascript - Javascript Discord Bot API 请求
- android - 如何使用 Android 的文件选择器从我的应用程序文件夹中进行选择