diff --git a/lib/init.c b/lib/init.c index f3e2e13..a120e88 100644 --- a/lib/init.c +++ b/lib/init.c @@ -393,9 +393,7 @@ iscsi_destroy_context(struct iscsi_context *iscsi) return 0; } - if (iscsi->fd != -1) { - iscsi_disconnect(iscsi); - } + iscsi_disconnect(iscsi); iscsi_cancel_pdus(iscsi); diff --git a/lib/socket.c b/lib/socket.c index 79471a3..cd6c97a 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -425,6 +425,9 @@ iscsi_tcp_disconnect(struct iscsi_context *iscsi) int iscsi_disconnect(struct iscsi_context *iscsi) { + if (!iscsi || !iscsi->drv || !iscsi->drv->disconnect) + return -1; + return iscsi->drv->disconnect(iscsi); }