@@ -555,6 +555,12 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_cleanup
555555 (void )jenv ;
556556 (void )jcl ;
557557
558+ /* release global logging callback object if registered */
559+ if (g_loggingCbIfaceObj != NULL ) {
560+ (* jenv )-> DeleteGlobalRef (jenv , g_loggingCbIfaceObj );
561+ g_loggingCbIfaceObj = NULL ;
562+ }
563+
558564 return wolfSSL_Cleanup ();
559565}
560566
@@ -583,18 +589,26 @@ JNIEXPORT jint JNICALL Java_com_wolfssl_WolfSSL_setLoggingCb
583589
584590 (void )jcl ;
585591
586- if (! jenv || ! callback ) {
592+ if (jenv == NULL ) {
587593 return BAD_FUNC_ARG ;
588594 }
589595
590- /* store Java logging callback Interface object */
591- g_loggingCbIfaceObj = (* jenv )-> NewGlobalRef (jenv , callback );
592- if (!g_loggingCbIfaceObj ) {
593- printf ("error storing global logging callback interface\n" );
594- return SSL_FAILURE ;
596+ /* release existing logging callback object if registered */
597+ if (g_loggingCbIfaceObj != NULL ) {
598+ (* jenv )-> DeleteGlobalRef (jenv , g_loggingCbIfaceObj );
599+ g_loggingCbIfaceObj = NULL ;
595600 }
596601
597- ret = wolfSSL_SetLoggingCb (NativeLoggingCallback );
602+ if (callback != NULL ) {
603+ /* store Java logging callback Interface object */
604+ g_loggingCbIfaceObj = (* jenv )-> NewGlobalRef (jenv , callback );
605+ if (g_loggingCbIfaceObj == NULL ) {
606+ printf ("error storing global logging callback interface\n" );
607+ return SSL_FAILURE ;
608+ }
609+
610+ ret = wolfSSL_SetLoggingCb (NativeLoggingCallback );
611+ }
598612
599613 return ret ;
600614}
0 commit comments