diff --git a/lib/sync.c b/lib/sync.c index 62ce32b..abbae9e 100644 --- a/lib/sync.c +++ b/lib/sync.c @@ -54,11 +54,27 @@ static void event_loop(struct iscsi_context *iscsi, struct iscsi_sync_state *state) { struct pollfd pfd; + int scsi_timeout; int ret; + time_t t; + if (iscsi->scsi_timeout) { + scsi_timeout = time(NULL) + iscsi->scsi_timeout; + } else { + scsi_timeout = 0; + } + while (state->finished == 0) { short revents; + if (scsi_timeout) { + t = time(NULL); + if (t > scsi_timeout) { + iscsi_set_error(iscsi, "Connect timedout"); + state->status = -1; + return; + } + } pfd.fd = iscsi_get_fd(iscsi); pfd.events = iscsi_which_events(iscsi);