TInt Open(RSocketServ& aServer,const TDesC& aName) { TInt err = init_locks(); if (err != KErrNone) { return err; } err = RSocket::Open(aServer, aName); if (err != KErrNone) { destroy_locks(); } return err; }
TInt Open(RSocketServ& aServer) { TInt err = init_locks(); if (err != KErrNone) { return err; } err = RSocket::Open(aServer); if (err != KErrNone) { destroy_locks(); } return err; }
TInt Open(RSocketServ& aServer, TUint addrFamily, TUint sockType, TUint protocol) { TInt err = init_locks(); if (err != KErrNone) { return err; } err = RSocket::Open(aServer, addrFamily, sockType, protocol); if (err != KErrNone) { destroy_locks(); } return err; }
int drngInit(JNIEnv *env) { char msg[1000]; int rc, ret; ENGINE* eng; #ifdef UNIX void *openssl = dlopen(HADOOP_CRYPTO_LIBRARY, RTLD_LAZY | RTLD_GLOBAL); #endif #ifdef WINDOWS HMODULE openssl = LoadLibrary(HADOOP_CRYPTO_LIBRARY); #endif if (!openssl) { snprintf(msg, sizeof(msg), "Cannot load %s!", HADOOP_CRYPTO_LIBRARY); THROW(env, "java/lang/UnsatisfiedLinkError", msg); return; } #ifdef UNIX dlerror(); // Clear any existing error LOAD_DYNAMIC_SYMBOL(dlsym_CRYPTO_malloc, env, openssl, "CRYPTO_malloc"); LOAD_DYNAMIC_SYMBOL(dlsym_CRYPTO_free, env, openssl, "CRYPTO_free"); LOAD_DYNAMIC_SYMBOL(dlsym_CRYPTO_num_locks, env, openssl, "CRYPTO_num_locks"); LOAD_DYNAMIC_SYMBOL(dlsym_CRYPTO_set_locking_callback, \ env, openssl, "CRYPTO_set_locking_callback"); LOAD_DYNAMIC_SYMBOL(dlsym_CRYPTO_set_id_callback, env, \ openssl, "CRYPTO_set_id_callback"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_load_rdrand, env, \ openssl, "ENGINE_load_rdrand"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_by_id, env, openssl, "ENGINE_by_id"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_init, env, openssl, "ENGINE_init"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_set_default, env, \ openssl, "ENGINE_set_default"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_finish, env, openssl, "ENGINE_finish"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_free, env, openssl, "ENGINE_free"); LOAD_DYNAMIC_SYMBOL(dlsym_ENGINE_cleanup, env, openssl, "ENGINE_cleanup"); LOAD_DYNAMIC_SYMBOL(dlsym_RAND_bytes, env, openssl, "RAND_bytes"); #endif #ifdef WINDOWS LOAD_DYNAMIC_SYMBOL(__dlsym_CRYPTO_malloc, dlsym_CRYPTO_malloc, \ env, openssl, "CRYPTO_malloc"); LOAD_DYNAMIC_SYMBOL(__dlsym_CRYPTO_free, dlsym_CRYPTO_free, \ env, openssl, "CRYPTO_free"); LOAD_DYNAMIC_SYMBOL(__dlsym_CRYPTO_num_locks, dlsym_CRYPTO_num_locks, \ env, openssl, "CRYPTO_num_locks"); LOAD_DYNAMIC_SYMBOL(__dlsym_CRYPTO_set_locking_callback, \ dlsym_CRYPTO_set_locking_callback, \ env, openssl, "CRYPTO_set_locking_callback"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_load_rdrand, dlsym_ENGINE_load_rdrand, \ env, openssl, "ENGINE_load_rdrand"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_by_id, dlsym_ENGINE_by_id, \ env, openssl, "ENGINE_by_id"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_init, dlsym_ENGINE_init, \ env, openssl, "ENGINE_init"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_set_default, dlsym_ENGINE_set_default, \ env, openssl, "ENGINE_set_default"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_finish, dlsym_ENGINE_finish, \ env, openssl, "ENGINE_finish"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_free, dlsym_ENGINE_free, \ env, openssl, "ENGINE_free"); LOAD_DYNAMIC_SYMBOL(__dlsym_ENGINE_cleanup, dlsym_ENGINE_cleanup, \ env, openssl, "ENGINE_cleanup"); LOAD_DYNAMIC_SYMBOL(__dlsym_RAND_bytes, dlsym_RAND_bytes, \ env, openssl, "RAND_bytes"); #endif init_locks(); dlsym_ENGINE_load_rdrand(); eng = dlsym_ENGINE_by_id("rdrand"); ret = -1; do { if (NULL == eng) { break; } rc = dlsym_ENGINE_init(eng); if (1 != rc) { break; } rc = dlsym_ENGINE_set_default(eng, ENGINE_METHOD_RAND); if(1 != rc) { break; } ret = 0; } while(0); if (ret == -1) { if (NULL != eng) { dlsym_ENGINE_finish(eng); dlsym_ENGINE_free(eng); } dlsym_ENGINE_cleanup(); destroy_locks(); } return ret; }