]> git.sur5r.net Git - bacula/bacula/blobdiff - bacula/src/stored/read_record.c
Status cleanup and cancelling FD
[bacula/bacula] / bacula / src / stored / read_record.c
index ace357c879bec3f79b8b432b26e1830b6210730c..85b9b44add9f4bea2ed2240e82d6ade4339f8500 100644 (file)
@@ -44,11 +44,12 @@ int read_records(JCR *jcr,  DEVICE *dev,
    uint32_t record, num_files = 0;
    int verbose = FALSE;
    int ok = TRUE;
+   int done = FALSE;
    SESSION_LABEL sessrec;
 
    block = new_block(dev);
    rec = new_record();
-   for ( ;ok; ) {
+   for ( ;ok && !done; ) {
       if (job_cancelled(jcr)) {
         ok = FALSE;
         break;
@@ -86,7 +87,6 @@ int read_records(JCR *jcr,  DEVICE *dev,
            read_block_from_device(dev, block);
            read_record_from_block(block, trec);
            get_session_record(dev, trec, &sessrec);
-           trec->File = dev->file;
            record_cb(jcr, dev, block, trec);
            free_record(trec);
            goto next_record;
@@ -117,7 +117,6 @@ next_record:
                  block->BlockNumber, rec->remainder);
            break;
         }
-        rec->File = dev->file;
          Dmsg3(10, "read-OK. stat=%s blk=%d rem=%d\n", rec_state_to_str(rec), 
                  block->BlockNumber, rec->remainder);
         /*
@@ -158,7 +157,7 @@ next_record:
         if (jcr->bsr) {
            int stat = match_bsr(jcr->bsr, rec, &dev->VolHdr, &sessrec);
            if (stat == -1) { /* no more possible matches */
-              ok = FALSE;
+              done = TRUE;   /* all items found, stop */
               break;
            } else if (stat == 0) {  /* no match */
               if (verbose) {