for (i = 0; i < numrec; i++) {
                        struct nvmf_disc_log_entry *e = &log->entries[i];
+                       nvme_ctrl_t cl;
                        bool discover = false;
                        bool disconnect;
                        nvme_ctrl_t child;
                        };
 
                        /* Already connected ? */
-                       if (lookup_ctrl(r, &trcfg))
+                       cl = lookup_ctrl(r, &trcfg);
+                       if (cl && nvme_ctrl_get_name(cl))
                                continue;
 
                        /* Skip connect if the transport types don't match */
                .trsvcid        = trsvcid,
        };
 
-       if (lookup_ctrl(r, &trcfg)) {
+       c = lookup_ctrl(r, &trcfg);
+       if (c && nvme_ctrl_get_name(c)) {
                fprintf(stderr, "already connected\n");
                errno = EALREADY;
                goto out_free;