diff --git a/include/iscsi-private.h b/include/iscsi-private.h index c993e11..17322d8 100644 --- a/include/iscsi-private.h +++ b/include/iscsi-private.h @@ -367,6 +367,9 @@ uint32_t iscsi_itt_post_increment(struct iscsi_context *iscsi); void iscsi_timeout_scan(struct iscsi_context *iscsi); +void iscsi_reconnect_cb(struct iscsi_context *iscsi _U_, int status, + void *command_data, void *private_data); + #ifdef __cplusplus } #endif diff --git a/lib/connect.c b/lib/connect.c index 2c485e3..a4354d1 100644 --- a/lib/connect.c +++ b/lib/connect.c @@ -249,8 +249,8 @@ void iscsi_defer_reconnect(struct iscsi_context *iscsi) } } -static void iscsi_reconnect_cb(struct iscsi_context *iscsi _U_, int status, - void *command_data _U_, void *private_data _U_) +void iscsi_reconnect_cb(struct iscsi_context *iscsi _U_, int status, + void *command_data _U_, void *private_data _U_) { int i; if (status != SCSI_STATUS_GOOD) { diff --git a/lib/socket.c b/lib/socket.c index f26cb6a..5e76055 100644 --- a/lib/socket.c +++ b/lib/socket.c @@ -780,6 +780,9 @@ iscsi_service_reconnect_if_loggedin(struct iscsi_context *iscsi) } } if (iscsi->old_iscsi) { + if (!iscsi->pending_reconnect) { + iscsi_reconnect_cb(iscsi, SCSI_STATUS_ERROR, NULL, NULL); + } return 0; } return -1;