}
ks_pool_free(bh->pool, &localid);
- if (bsub) {
+ if (!remove && bsub) {
blade_subscription_callback_set(bsub, event_callback);
blade_subscription_callback_data_set(bsub, event_data);
}
ks_assert(btmgr);
- if (name && name[0]) bt = (blade_transport_t *)ks_hash_search(btmgr->transports, (void *)name, KS_READLOCKED);
+ ks_hash_read_lock(btmgr->transports);
+ if (name && name[0]) bt = (blade_transport_t *)ks_hash_search(btmgr->transports, (void *)name, KS_UNLOCKED);
if (!bt && ordefault) bt = btmgr->default_transport;
// @todo if (bt) blade_transport_read_lock(bt);
ks_hash_read_unlock(btmgr->transports);
if (autoconnect) {
blade_connection_t *bc = NULL;
blade_identity_t *target = NULL;
+ ks_bool_t connected = KS_FALSE;
blade_identity_create(&target, blade_handle_pool_get(bh));
- if (blade_identity_parse(target, autoconnect) == KS_STATUS_SUCCESS) blade_handle_connect(bh, &bc, target, NULL);
+ if (blade_identity_parse(target, autoconnect) == KS_STATUS_SUCCESS) connected = blade_handle_connect(bh, &bc, target, NULL) == KS_STATUS_SUCCESS;
blade_identity_destroy(&target);
- ks_sleep_ms(3000);
+
+ if (connected) {
+ // @todo use session state change callback to know when the session is ready and the realm(s) available from blade.connect
+ ks_sleep_ms(3000);
+ }
}
loop(bh);
ks_status_t testproto_destroy(testproto_t **testP)
{
testproto_t *test = NULL;
- //ks_pool_t *pool = NULL;
+ ks_pool_t *pool = NULL;
ks_assert(testP);
ks_assert(*testP);
test = *testP;
+ pool = test->pool;
+
+ ks_pool_close(&pool);
- ks_pool_free(test->pool, testP);
+ *testP = NULL;
return KS_STATUS_SUCCESS;
}