X-Git-Url: https://git.novaco.in/?p=NovacoinLibrary.git;a=blobdiff_plain;f=Novacoin%2FCBlockStore.cs;h=8d77dc48d724d8212f16ca04939e075cd2456fd7;hp=28706a56b3a591da60f45bd88c8a66c1d816877e;hb=4c45f0efb0bd8451c8b9a02833ce007477534751;hpb=6c6e3b0c68e764ea520dde48d5e44c757f1dabbb diff --git a/Novacoin/CBlockStore.cs b/Novacoin/CBlockStore.cs index 28706a5..8d77dc4 100644 --- a/Novacoin/CBlockStore.cs +++ b/Novacoin/CBlockStore.cs @@ -189,13 +189,13 @@ namespace Novacoin // Seek to the end and then append magic bytes there. writer.Seek(0, SeekOrigin.End); writer.Write(magicBytes, 0, magicBytes.Length); + writer.Write(blkLenBytes, 0, blkLenBytes.Length); // Save block size and current position in the block cursor fields. nBlockPos = writer.Position; nBlockSize = blockBytes.Length; // Write block and flush the stream. - writer.Write(blkLenBytes, 0, blkLenBytes.Length); writer.Write(blockBytes, 0, blockBytes.Length); writer.Flush(); @@ -389,9 +389,9 @@ namespace Novacoin bool firstInit = !File.Exists(strDbFile); dbConn = new SQLiteConnection(new SQLitePlatformGeneric(), strDbFile); - var fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite); - writer = new BinaryWriter(fStreamReadWrite).BaseStream; + var fStreamReadWrite = File.Open(strBlockFile, FileMode.OpenOrCreate, FileAccess.ReadWrite, FileShare.ReadWrite); reader = new BinaryReader(fStreamReadWrite).BaseStream; + writer = new BinaryWriter(fStreamReadWrite).BaseStream; if (firstInit) { @@ -472,6 +472,11 @@ namespace Novacoin { // Handle trasactions + if (!block.vtx[i].VerifyScripts()) + { + return false; + } + var nTxOffset = itemTemplate.nBlockPos + block.GetTxOffset(i); TxType txnType = TxType.TX_USER; @@ -522,7 +527,7 @@ namespace Novacoin uint nHeight = prevBlockCursor.nHeight + 1; // Check timestamp against prev - if (NetUtils.FutureDrift(block.header.nTime) < prevBlockHeader.nTime) + if (NetInfo.FutureDrift(block.header.nTime) < prevBlockHeader.nTime) { // block's timestamp is too early return false; @@ -743,7 +748,7 @@ namespace Novacoin // Free other state (managed objects). reader.Dispose(); - writer.Dispose(); + reader.Dispose(); } if (dbConn != null)