From 15840c7545a73562af3efd0a9d4ebe3e7e8d6760 Mon Sep 17 00:00:00 2001 From: jl777 Date: Sun, 18 Sep 2016 08:58:20 -0300 Subject: [PATCH] test --- iguana/iguana_ramchain.c | 31 +++++++++++++++++++++++++------ 1 file changed, 25 insertions(+), 6 deletions(-) diff --git a/iguana/iguana_ramchain.c b/iguana/iguana_ramchain.c index 6a62241c7..b2c125bed 100755 --- a/iguana/iguana_ramchain.c +++ b/iguana/iguana_ramchain.c @@ -1994,10 +1994,10 @@ void iguana_blockdelete(struct iguana_info *coin,bits256 hash2,int32_t i) if ( fname[0] != 0 ) { OS_removefile(fname,0); -/*#ifndef WIN32 +#ifndef WIN32 strcat(fname,".tmp"); OS_removefile(fname,0); -#endif*/ +#endif } } @@ -2082,7 +2082,7 @@ int32_t iguana_oldbundlefiles(struct iguana_info *coin,uint32_t *ipbits,void **p void *iguana_bundlefile(struct iguana_info *coin,char *fname,long *filesizep,struct iguana_bundle *bp,int32_t bundlei,int32_t renameflag) { - int32_t checki,hdrsi; void *ptr = 0; FILE *fp; char renamed[1024]; static const bits256 zero; + int32_t checki,hdrsi; long checksize; void *ptr = 0; FILE *fp; static const bits256 zero; char renamed[1024]; *filesizep = 0; fname[0] = 0; if ( (checki= iguana_peerfname(coin,&hdrsi,GLOBAL_TMPDIR,fname,0,bp->hashes[bundlei],zero,1,1)) != bundlei || bundlei < 0 || bundlei >= coin->chain->bundlesize ) @@ -2094,22 +2094,41 @@ void *iguana_bundlefile(struct iguana_info *coin,char *fname,long *filesizep,str return(0); else { + fseek(fp,0,SEEK_END); + checksize = ftell(fp); fclose(fp); -/*#ifndef WIN32 +#ifndef WIN32 if ( renameflag != 0 ) { sprintf(renamed,"%s.tmp",fname); OS_renamefile(fname,renamed); strcpy(fname,renamed); } -#endif*/ +#endif if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 ) { printf("error mapping.(%s) bundlei.%d\n",fname,bundlei); return(0); } + if ( *filesizep != checksize ) + { + printf("%s *filesizep %ld != %ld\n",fname,*filesizep,checksize); + OS_releasemap(ptr,*filesizep); + sleep(1); + if ( (ptr= OS_mapfile(fname,filesizep,0)) == 0 ) + { + printf("error mapping.(%s) bundlei.%d\n",fname,bundlei); + return(0); + } + if ( *filesizep != checksize ) + { + printf("second %s failure *filesizep %ld != %ld\n",fname,*filesizep,checksize); + OS_releasemap(ptr,*filesizep); + return(0); + } + } } - printf("mapped.(%s) bundlei.[%d:%d] %p[%ld]\n",fname,hdrsi,bundlei,ptr,*filesizep); + //printf("mapped.(%s) bundlei.[%d:%d] %p[%ld]\n",fname,hdrsi,bundlei,ptr,*filesizep); return(ptr); }