Merge pull request #91 from cmgustavo/bug/01-blockextractor
Fixed BlockExtractor
This commit is contained in:
commit
63d2261369
|
@ -97,30 +97,41 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
||||||
|
|
||||||
async.whilst(
|
async.whilst(
|
||||||
function() {
|
function() {
|
||||||
return (!magic);
|
return (!magic || magic === '00000000');
|
||||||
},
|
},
|
||||||
function(w_cb) {
|
function(w_cb) {
|
||||||
|
magic = null;
|
||||||
|
|
||||||
self.readCurrentFileSync();
|
self.readCurrentFileSync();
|
||||||
|
|
||||||
if (self.currentFileIndex < 0) return cb();
|
if (self.currentFileIndex < 0) return cb();
|
||||||
|
|
||||||
|
var byte0 = self.currentParser ? self.currentParser.buffer(1).toString('hex') : null;
|
||||||
|
|
||||||
magic = self.currentParser ? self.currentParser.buffer(4).toString('hex')
|
if (byte0) {
|
||||||
: null ;
|
// Grab 3 bytes from block without removing them
|
||||||
|
var p = self.currentParser.pos;
|
||||||
|
var bytes123 = self.currentParser.subject.toString('hex',p,p+3);
|
||||||
|
magic = byte0 + bytes123;
|
||||||
|
|
||||||
if (!self.currentParser || self.currentParser.eof() || magic === '00000000') {
|
if (magic !=='00000000' && magic !== self.magic) {
|
||||||
magic = null;
|
|
||||||
if (self.nextFile()) {
|
if (self.errorCount++ > 4)
|
||||||
|
return cb(new Error('CRITICAL ERROR: Magic number mismatch: ' +
|
||||||
|
magic + '!=' + self.magic));
|
||||||
|
|
||||||
|
magic=null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!self.currentParser || self.currentParser.eof() ) {
|
||||||
|
if (self.nextFile())
|
||||||
console.log('Moving forward to file:' + self.currentFile() );
|
console.log('Moving forward to file:' + self.currentFile() );
|
||||||
return w_cb();
|
else
|
||||||
}
|
|
||||||
else {
|
|
||||||
console.log('Finished all files');
|
console.log('Finished all files');
|
||||||
|
|
||||||
magic = null;
|
magic = null;
|
||||||
return w_cb();
|
return w_cb();
|
||||||
}
|
}
|
||||||
}
|
|
||||||
else {
|
else {
|
||||||
return w_cb();
|
return w_cb();
|
||||||
}
|
}
|
||||||
|
@ -128,14 +139,8 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
||||||
},
|
},
|
||||||
function (a_cb) {
|
function (a_cb) {
|
||||||
if (!magic) return a_cb();
|
if (!magic) return a_cb();
|
||||||
if (magic !== self.magic) {
|
// Remove 3 bytes from magic and spacer
|
||||||
var e = new Error('CRITICAL ERROR: Magic number mismatch: ' +
|
self.currentParser.buffer(3+4);
|
||||||
magic + '!=' + self.magic);
|
|
||||||
return a_cb(e);
|
|
||||||
}
|
|
||||||
|
|
||||||
// spacer?
|
|
||||||
self.currentParser.word32le();
|
|
||||||
return a_cb();
|
return a_cb();
|
||||||
},
|
},
|
||||||
function (a_cb) {
|
function (a_cb) {
|
||||||
|
@ -144,6 +149,7 @@ BlockExtractor.prototype.getNextBlock = function(cb) {
|
||||||
b = new Block();
|
b = new Block();
|
||||||
b.parse(self.currentParser);
|
b.parse(self.currentParser);
|
||||||
b.getHash();
|
b.getHash();
|
||||||
|
self.errorCount=0;
|
||||||
return a_cb();
|
return a_cb();
|
||||||
},
|
},
|
||||||
], function(err) {
|
], function(err) {
|
||||||
|
|
Loading…
Reference in New Issue