]> git.ipfire.org Git - thirdparty/freeswitch.git/commitdiff
FS-10167: Bug fixes, memory leaks, etc
authorShane Bryldt <astaelan@gmail.com>
Mon, 3 Jul 2017 19:45:29 +0000 (13:45 -0600)
committerShane Bryldt <astaelan@gmail.com>
Mon, 3 Jul 2017 19:45:29 +0000 (13:45 -0600)
libs/libblade/src/blade_stack.c
libs/libblade/src/blade_transportmgr.c
libs/libblade/test/testcli.c
libs/libblade/test/testcon.c

index 1cc86a886156d27a636c17d542731dac1e516dc9..fb6cc8f28de5d7dfcfa72cefdfd0309d12519e0d 100644 (file)
@@ -1084,7 +1084,7 @@ KS_DECLARE(ks_status_t) blade_protocol_subscribe(blade_handle_t *bh, const char
        }
        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);
        }
index f03e50f301453f7a9b1b3cce515abe1c651e11c1..a1344084ec2d93e06b7d18520be4415113788230 100644 (file)
@@ -184,7 +184,8 @@ KS_DECLARE(blade_transport_t *) blade_transportmgr_transport_lookup(blade_transp
 
        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);
index 8e55c7958d9cc0fc0377ec8b6078ddbc4cb0d5dc..b02a71abfcb8384602c7b363085856e306822a06 100644 (file)
@@ -292,14 +292,19 @@ int main(int argc, char **argv)
        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);
index e2a51676fe0f4884e4b4c6814218184a4bdce4f9..4e1b854a41b7b93693e49e29fd351690184b215c 100644 (file)
@@ -73,14 +73,17 @@ ks_status_t testproto_create(testproto_t **testP, blade_handle_t *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;
 }