【问题标题】:why the certificateVerifierTask_class is not unload in netty-tcnative为什么在 netty-tcnative 中没有卸载 certificateVerifierTask_class
【发布时间】:2021-04-01 05:02:57
【问题描述】:

看了netty-tcnative的源码sslcontext.c,发现「certificateVerifierTask_class」是在方法中加载的        ​​​

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);
}

是否不需要卸载过程?

【问题讨论】:

    标签: openssl netty boringssl


    【解决方案1】:

    这实际上是一个错误...非常感谢我刚刚修复了它https://github.com/netty/netty-tcnative/pull/637

    【讨论】:

      猜你喜欢
      • 2018-07-24
      • 1970-01-01
      • 1970-01-01
      • 2021-10-23
      • 1970-01-01
      • 1970-01-01
      • 2019-08-29
      • 2018-12-05
      • 1970-01-01
      相关资源
      最近更新 更多