extern void MT_Close(void) { MT_CloseThreads(); FreeManualEvent(td.activity); FreeMutex(td.multiLock); FreeMutex(td.queueLock); FreeManualEvent(td.syncStart); FreeManualEvent(td.syncEnd); TLSFree(td.tlsItem); }
/* Free all CRL resources */ void FreeCRL(WOLFSSL_CRL* crl, int dynamic) { CRL_Entry* tmp = crl->crlList; WOLFSSL_ENTER("FreeCRL"); if (crl->monitors[0].path) XFREE(crl->monitors[0].path, crl->heap, DYNAMIC_TYPE_CRL_MONITOR); if (crl->monitors[1].path) XFREE(crl->monitors[1].path, crl->heap, DYNAMIC_TYPE_CRL_MONITOR); while(tmp) { CRL_Entry* next = tmp->next; FreeCRL_Entry(tmp, crl->heap); XFREE(tmp, crl->heap, DYNAMIC_TYPE_CRL_ENTRY); tmp = next; } #ifdef HAVE_CRL_MONITOR if (crl->tid != 0) { WOLFSSL_MSG("stopping monitor thread"); if (StopMonitor(crl->mfd) == 0) pthread_join(crl->tid, NULL); else { WOLFSSL_MSG("stop monitor failed"); } } pthread_cond_destroy(&crl->cond); #endif FreeMutex(&crl->crlLock); if (dynamic) /* free self */ XFREE(crl, crl->heap, DYNAMIC_TYPE_CRL); }
/* Free all CRL resources */ void FreeCRL(CYASSL_CRL* crl, int dynamic) { CRL_Entry* tmp = crl->crlList; CYASSL_ENTER("FreeCRL"); if (crl->monitors[0].path) XFREE(crl->monitors[0].path, NULL, DYNAMIC_TYPE_CRL_MONITOR); if (crl->monitors[1].path) XFREE(crl->monitors[1].path, NULL, DYNAMIC_TYPE_CRL_MONITOR); while(tmp) { CRL_Entry* next = tmp->next; FreeCRL_Entry(tmp); XFREE(tmp, NULL, DYNAMIC_TYPE_CRL_ENTRY); tmp = next; } #ifdef HAVE_CRL_MONITOR if (crl->tid != 0) { CYASSL_MSG("stopping monitor thread"); if (StopMonitor(crl->mfd) == 0) pthread_join(crl->tid, NULL); else { CYASSL_MSG("stop monitor failed, cancel instead"); pthread_cancel(crl->tid); } } #endif FreeMutex(&crl->crlLock); if (dynamic) /* free self */ XFREE(crl, NULL, DYNAMIC_TYPE_CRL); }
static void FreeList( vlc_value_t *p_val ) { int i; for( i = 0; i < p_val->p_list->i_count; i++ ) { switch( p_val->p_list->pi_types[i] & VLC_VAR_TYPE ) { case VLC_VAR_STRING: FreeString( &p_val->p_list->p_values[i] ); break; case VLC_VAR_MUTEX: FreeMutex( &p_val->p_list->p_values[i] ); break; default: break; } } if( p_val->p_list->i_count ) { free( p_val->p_list->p_values ); free( p_val->p_list->pi_types ); } free( p_val->p_list ); }
void FreeOCSP(CYASSL_OCSP* ocsp, int dynamic) { OCSP_Entry* tmp = ocsp->ocspList; CYASSL_ENTER("FreeOCSP"); while (tmp) { OCSP_Entry* next = tmp->next; FreeOCSP_Entry(tmp); XFREE(tmp, NULL, DYNAMIC_TYPE_OCSP_ENTRY); tmp = next; } FreeMutex(&ocsp->ocspLock); if (dynamic) XFREE(ocsp, NULL, DYNAMIC_TYPE_OCSP); }
void FreeOCSP(WOLFSSL_OCSP* ocsp, int dynamic) { OcspEntry *entry, *next; WOLFSSL_ENTER("FreeOCSP"); for (entry = ocsp->ocspList; entry; entry = next) { next = entry->next; FreeOcspEntry(entry); XFREE(entry, NULL, DYNAMIC_TYPE_OCSP_ENTRY); } FreeMutex(&ocsp->ocspLock); if (dynamic) XFREE(ocsp, NULL, DYNAMIC_TYPE_OCSP); }