]> infiniteadaptability.org Git - seeder/commitdiff
...
authoralex <[email protected]>
Tue, 16 Nov 2021 06:17:45 +0000 (22:17 -0800)
committeralex <[email protected]>
Tue, 16 Nov 2021 06:17:45 +0000 (22:17 -0800)
src/block.c
src/file.c

index 14ac30f01004efffa0f4572ea4a45f779ad4e7aa..67518643d2a27acb873ecb06d42b53adda6279a9 100644 (file)
@@ -113,3 +113,7 @@ int block_merkle_root(struct block *root) {
 
        return 1;
 }
+
+int block_pad(struct block *root) {
+       return -1;
+}
index f2780d2c036325287b72e6ef6008095c1d934fb1..2810dcbf9c251257c131f715c46b300d5215ccfd 100644 (file)
@@ -24,6 +24,8 @@ int file_hash(struct file *file_p, int piece_length) {
        FILE *fp;
 
        if(NULL==file_p) { return -1; }
+
+       // check that piece length is >=16kb and a power of 2
        if((piece_length<16384)||(piece_length&&(piece_length&(piece_length-1)))) {
                return -1;
        }
@@ -34,6 +36,11 @@ int file_hash(struct file *file_p, int piece_length) {
                return -1;
        }
 
+       /* generate piece_layers
+        * 1. grab all data and hash
+        * 2. generate piece layer merkle trees (padding to piece layer boundary)
+        * 3. generate merkle root from piece layer roots (balancing tree in process)
+        */
        p = NULL;
        while(1) {
                size_t len = fread(data,sizeof(uint8_t),BLOCK_SIZE,fp);
@@ -60,6 +67,9 @@ int file_hash(struct file *file_p, int piece_length) {
 
        fclose(fp);
 
+       // pad to appropiate piece layer size
+       // i.e. so each piece layer tree is balanced
+
        int ratio = piece_length / BLOCK_SIZE;
        while(ratio>1) {
                if(block_merkle_layer(file_p->piece_layers)<0) { return -1; }