dev->set_slot(0); /* nothing loaded */
}
- free_volume(dev); /* Free any volume associated with this drive */
free_pool_memory(changer);
}
unlock_changer(dcr);
+
+ if (loaded > 0) { /* free_volume outside from changer lock */
+ free_volume(dev); /* Free any volume associated with this drive */
+ }
+
if (ok) {
dev->clear_unload();
}
POOLMEM *changer;
BPIPE *bpipe;
int len = sizeof_pool_memory(dir->msg) - 1;
- bool ok = false;
int stat;
if (!dev->is_autochanger() || !dcr->device->changer_name ||
bpipe = open_bpipe(changer, timeout, "r");
if (!bpipe) {
dir->fsend(_("3996 Open bpipe failed.\n"));
- goto bail_out;
+ goto bail_out; /* TODO: check if we need to return false */
}
if (bstrcmp(cmd, "list") || bstrcmp(cmd, "listall")) {
/* Get output from changer */
dir->fsend(_("Autochanger error: ERR=%s\n"), be.bstrerror());
}
bnet_sig(dir, BNET_EOD);
- ok = true;
bail_out:
unlock_changer(dcr);